mirror of https://git.rancher.io/rke2-charts
parent
6c7ccf3113
commit
3d34983ce4
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,13 +0,0 @@
|
||||||
apiVersion: v1
|
|
||||||
appVersion: v3.13.3
|
|
||||||
description: Install Canal Network Plugin.
|
|
||||||
home: https://www.projectcalico.org/
|
|
||||||
keywords:
|
|
||||||
- canal
|
|
||||||
maintainers:
|
|
||||||
- email: charts@rancher.com
|
|
||||||
name: Rancher Labs
|
|
||||||
name: rke2-canal
|
|
||||||
sources:
|
|
||||||
- https://github.com/rancher/rke2-charts
|
|
||||||
version: v3.13.300-build2021022301
|
|
|
@ -1,3 +0,0 @@
|
||||||
Canal network plugin has been installed.
|
|
||||||
|
|
||||||
NOTE: It may take few minutes until Canal image install CNI files and node become in ready state.
|
|
|
@ -1,7 +0,0 @@
|
||||||
{{- define "system_default_registry" -}}
|
|
||||||
{{- if .Values.global.systemDefaultRegistry -}}
|
|
||||||
{{- printf "%s/" .Values.global.systemDefaultRegistry -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- "" -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
|
@ -1,67 +0,0 @@
|
||||||
---
|
|
||||||
# Source: calico/templates/calico-config.yaml
|
|
||||||
# This ConfigMap is used to configure a self-hosted Canal installation.
|
|
||||||
kind: ConfigMap
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}-config
|
|
||||||
namespace: kube-system
|
|
||||||
data:
|
|
||||||
# Typha is disabled.
|
|
||||||
typha_service_name: {{ .Values.calico.typhaServiceName | quote }}
|
|
||||||
# The interface used by canal for host <-> host communication.
|
|
||||||
# If left blank, then the interface is chosen using the node's
|
|
||||||
# default route.
|
|
||||||
canal_iface: {{ .Values.flannel.iface | quote }}
|
|
||||||
|
|
||||||
# Whether or not to masquerade traffic to destinations not within
|
|
||||||
# the pod network.
|
|
||||||
masquerade: {{ .Values.calico.masquerade | quote }}
|
|
||||||
|
|
||||||
# Configure the MTU to use
|
|
||||||
veth_mtu: {{ .Values.calico.vethuMTU | quote }}
|
|
||||||
|
|
||||||
# The CNI network configuration to install on each node. The special
|
|
||||||
# values in this config will be automatically populated.
|
|
||||||
cni_network_config: |-
|
|
||||||
{
|
|
||||||
"name": "k8s-pod-network",
|
|
||||||
"cniVersion": "0.3.1",
|
|
||||||
"plugins": [
|
|
||||||
{
|
|
||||||
"type": "calico",
|
|
||||||
"log_level": "info",
|
|
||||||
"datastore_type": "kubernetes",
|
|
||||||
"nodename": "__KUBERNETES_NODE_NAME__",
|
|
||||||
"mtu": __CNI_MTU__,
|
|
||||||
"ipam": {
|
|
||||||
"type": "host-local",
|
|
||||||
"subnet": "usePodCidr"
|
|
||||||
},
|
|
||||||
"policy": {
|
|
||||||
"type": "k8s"
|
|
||||||
},
|
|
||||||
"kubernetes": {
|
|
||||||
"kubeconfig": "__KUBECONFIG_FILEPATH__"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "portmap",
|
|
||||||
"snat": true,
|
|
||||||
"capabilities": {"portMappings": true}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "bandwidth",
|
|
||||||
"capabilities": {"bandwidth": true}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
# Flannel network configuration. Mounted into the flannel container.
|
|
||||||
net-conf.json: |
|
|
||||||
{
|
|
||||||
"Network": {{ .Values.podCidr | quote }},
|
|
||||||
"Backend": {
|
|
||||||
"Type": {{ .Values.flannel.backend | quote }}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,197 +0,0 @@
|
||||||
---
|
|
||||||
# Source: calico/templates/kdd-crds.yaml
|
|
||||||
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: bgpconfigurations.crd.projectcalico.org
|
|
||||||
spec:
|
|
||||||
scope: Cluster
|
|
||||||
group: crd.projectcalico.org
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: BGPConfiguration
|
|
||||||
plural: bgpconfigurations
|
|
||||||
singular: bgpconfiguration
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: bgppeers.crd.projectcalico.org
|
|
||||||
spec:
|
|
||||||
scope: Cluster
|
|
||||||
group: crd.projectcalico.org
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: BGPPeer
|
|
||||||
plural: bgppeers
|
|
||||||
singular: bgppeer
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: blockaffinities.crd.projectcalico.org
|
|
||||||
spec:
|
|
||||||
scope: Cluster
|
|
||||||
group: crd.projectcalico.org
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: BlockAffinity
|
|
||||||
plural: blockaffinities
|
|
||||||
singular: blockaffinity
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: clusterinformations.crd.projectcalico.org
|
|
||||||
spec:
|
|
||||||
scope: Cluster
|
|
||||||
group: crd.projectcalico.org
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: ClusterInformation
|
|
||||||
plural: clusterinformations
|
|
||||||
singular: clusterinformation
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: felixconfigurations.crd.projectcalico.org
|
|
||||||
spec:
|
|
||||||
scope: Cluster
|
|
||||||
group: crd.projectcalico.org
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: FelixConfiguration
|
|
||||||
plural: felixconfigurations
|
|
||||||
singular: felixconfiguration
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: globalnetworkpolicies.crd.projectcalico.org
|
|
||||||
spec:
|
|
||||||
scope: Cluster
|
|
||||||
group: crd.projectcalico.org
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: GlobalNetworkPolicy
|
|
||||||
plural: globalnetworkpolicies
|
|
||||||
singular: globalnetworkpolicy
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: globalnetworksets.crd.projectcalico.org
|
|
||||||
spec:
|
|
||||||
scope: Cluster
|
|
||||||
group: crd.projectcalico.org
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: GlobalNetworkSet
|
|
||||||
plural: globalnetworksets
|
|
||||||
singular: globalnetworkset
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: hostendpoints.crd.projectcalico.org
|
|
||||||
spec:
|
|
||||||
scope: Cluster
|
|
||||||
group: crd.projectcalico.org
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: HostEndpoint
|
|
||||||
plural: hostendpoints
|
|
||||||
singular: hostendpoint
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: ipamblocks.crd.projectcalico.org
|
|
||||||
spec:
|
|
||||||
scope: Cluster
|
|
||||||
group: crd.projectcalico.org
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: IPAMBlock
|
|
||||||
plural: ipamblocks
|
|
||||||
singular: ipamblock
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: ipamconfigs.crd.projectcalico.org
|
|
||||||
spec:
|
|
||||||
scope: Cluster
|
|
||||||
group: crd.projectcalico.org
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: IPAMConfig
|
|
||||||
plural: ipamconfigs
|
|
||||||
singular: ipamconfig
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: ipamhandles.crd.projectcalico.org
|
|
||||||
spec:
|
|
||||||
scope: Cluster
|
|
||||||
group: crd.projectcalico.org
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: IPAMHandle
|
|
||||||
plural: ipamhandles
|
|
||||||
singular: ipamhandle
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: ippools.crd.projectcalico.org
|
|
||||||
spec:
|
|
||||||
scope: Cluster
|
|
||||||
group: crd.projectcalico.org
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: IPPool
|
|
||||||
plural: ippools
|
|
||||||
singular: ippool
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: networkpolicies.crd.projectcalico.org
|
|
||||||
spec:
|
|
||||||
scope: Namespaced
|
|
||||||
group: crd.projectcalico.org
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: NetworkPolicy
|
|
||||||
plural: networkpolicies
|
|
||||||
singular: networkpolicy
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: networksets.crd.projectcalico.org
|
|
||||||
spec:
|
|
||||||
scope: Namespaced
|
|
||||||
group: crd.projectcalico.org
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: NetworkSet
|
|
||||||
plural: networksets
|
|
||||||
singular: networkset
|
|
|
@ -1,262 +0,0 @@
|
||||||
---
|
|
||||||
# Source: calico/templates/calico-node.yaml
|
|
||||||
# This manifest installs the canal container, as well
|
|
||||||
# as the CNI plugins and network config on
|
|
||||||
# each master and worker node in a Kubernetes cluster.
|
|
||||||
kind: DaemonSet
|
|
||||||
apiVersion: apps/v1
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name | quote }}
|
|
||||||
namespace: kube-system
|
|
||||||
labels:
|
|
||||||
k8s-app: canal
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
k8s-app: canal
|
|
||||||
updateStrategy:
|
|
||||||
type: RollingUpdate
|
|
||||||
rollingUpdate:
|
|
||||||
maxUnavailable: 1
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
k8s-app: canal
|
|
||||||
annotations:
|
|
||||||
# This, along with the CriticalAddonsOnly toleration below,
|
|
||||||
# marks the pod as a critical add-on, ensuring it gets
|
|
||||||
# priority scheduling and that its resources are reserved
|
|
||||||
# if it ever gets evicted.
|
|
||||||
scheduler.alpha.kubernetes.io/critical-pod: ''
|
|
||||||
spec:
|
|
||||||
nodeSelector:
|
|
||||||
kubernetes.io/os: linux
|
|
||||||
hostNetwork: true
|
|
||||||
tolerations:
|
|
||||||
# Make sure canal gets scheduled on all nodes.
|
|
||||||
- effect: NoSchedule
|
|
||||||
operator: Exists
|
|
||||||
# Mark the pod as a critical add-on for rescheduling.
|
|
||||||
- key: CriticalAddonsOnly
|
|
||||||
operator: Exists
|
|
||||||
- effect: NoExecute
|
|
||||||
operator: Exists
|
|
||||||
serviceAccountName: canal
|
|
||||||
# Minimize downtime during a rolling upgrade or deletion; tell Kubernetes to do a "force
|
|
||||||
# deletion": https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods.
|
|
||||||
terminationGracePeriodSeconds: 0
|
|
||||||
priorityClassName: system-node-critical
|
|
||||||
initContainers:
|
|
||||||
# This container installs the CNI binaries
|
|
||||||
# and CNI network config file on each node.
|
|
||||||
- name: install-cni
|
|
||||||
image: {{ template "system_default_registry" . }}{{ .Values.calico.cniImage.repository }}:{{ .Values.calico.cniImage.tag }}
|
|
||||||
command: ["/install-cni.sh"]
|
|
||||||
env:
|
|
||||||
# Name of the CNI config file to create.
|
|
||||||
- name: CNI_CONF_NAME
|
|
||||||
value: "10-canal.conflist"
|
|
||||||
# The CNI network config to install on each node.
|
|
||||||
- name: CNI_NETWORK_CONFIG
|
|
||||||
valueFrom:
|
|
||||||
configMapKeyRef:
|
|
||||||
name: {{ .Release.Name }}-config
|
|
||||||
key: cni_network_config
|
|
||||||
# Set the hostname based on the k8s node name.
|
|
||||||
- name: KUBERNETES_NODE_NAME
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: spec.nodeName
|
|
||||||
# CNI MTU Config variable
|
|
||||||
- name: CNI_MTU
|
|
||||||
valueFrom:
|
|
||||||
configMapKeyRef:
|
|
||||||
name: {{ .Release.Name }}-config
|
|
||||||
key: veth_mtu
|
|
||||||
# Prevents the container from sleeping forever.
|
|
||||||
- name: SLEEP
|
|
||||||
value: "false"
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /host/opt/cni/bin
|
|
||||||
name: cni-bin-dir
|
|
||||||
- mountPath: /host/etc/cni/net.d
|
|
||||||
name: cni-net-dir
|
|
||||||
securityContext:
|
|
||||||
privileged: true
|
|
||||||
# Adds a Flex Volume Driver that creates a per-pod Unix Domain Socket to allow Dikastes
|
|
||||||
# to communicate with Felix over the Policy Sync API.
|
|
||||||
- name: flexvol-driver
|
|
||||||
image: {{ template "system_default_registry" . }}{{ .Values.calico.flexvolImage.repository }}:{{ .Values.calico.flexvolImage.tag }}
|
|
||||||
command: ['/usr/local/bin/flexvol.sh', '-s', '/usr/local/bin/flexvol', '-i', 'flexvoldriver']
|
|
||||||
volumeMounts:
|
|
||||||
- name: flexvol-driver-host
|
|
||||||
mountPath: /host/driver
|
|
||||||
securityContext:
|
|
||||||
privileged: true
|
|
||||||
containers:
|
|
||||||
# Runs canal container on each Kubernetes node. This
|
|
||||||
# container programs network policy and routes on each
|
|
||||||
# host.
|
|
||||||
- name: calico-node
|
|
||||||
command:
|
|
||||||
- "start_runit"
|
|
||||||
image: {{ template "system_default_registry" . }}{{ .Values.calico.nodeImage.repository }}:{{ .Values.calico.nodeImage.tag }}
|
|
||||||
env:
|
|
||||||
# Use Kubernetes API as the backing datastore.
|
|
||||||
- name: DATASTORE_TYPE
|
|
||||||
value: {{ .Values.calico.datastoreType | quote }}
|
|
||||||
# Configure route aggregation based on pod CIDR.
|
|
||||||
- name: USE_POD_CIDR
|
|
||||||
value: {{ .Values.calico.usePodCIDR | quote }}
|
|
||||||
# Wait for the datastore.
|
|
||||||
- name: WAIT_FOR_DATASTORE
|
|
||||||
value: {{ .Values.calico.waitForDatastore | quote }}
|
|
||||||
# Set based on the k8s node name.
|
|
||||||
- name: NODENAME
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: spec.nodeName
|
|
||||||
# Don't enable BGP.
|
|
||||||
- name: CALICO_NETWORKING_BACKEND
|
|
||||||
value: {{ .Values.calico.networkingBackend | quote }}
|
|
||||||
# Cluster type to identify the deployment type
|
|
||||||
- name: CLUSTER_TYPE
|
|
||||||
value: {{ .Values.calico.clusterType | quote}}
|
|
||||||
# Period, in seconds, at which felix re-applies all iptables state
|
|
||||||
- name: FELIX_IPTABLESREFRESHINTERVAL
|
|
||||||
value: {{ .Values.calico.felixIptablesRefreshInterval | quote}}
|
|
||||||
- name: FELIX_IPTABLESBACKEND
|
|
||||||
value: {{ .Values.calico.felixIptablesBackend | quote}}
|
|
||||||
# No IP address needed.
|
|
||||||
- name: IP
|
|
||||||
value: ""
|
|
||||||
# The default IPv4 pool to create on startup if none exists. Pod IPs will be
|
|
||||||
# chosen from this range. Changing this value after installation will have
|
|
||||||
# no effect. This should fall within `--cluster-cidr`.
|
|
||||||
# - name: CALICO_IPV4POOL_CIDR
|
|
||||||
# value: "192.168.0.0/16"
|
|
||||||
# Disable file logging so `kubectl logs` works.
|
|
||||||
- name: CALICO_DISABLE_FILE_LOGGING
|
|
||||||
value: "true"
|
|
||||||
# Set Felix endpoint to host default action to ACCEPT.
|
|
||||||
- name: FELIX_DEFAULTENDPOINTTOHOSTACTION
|
|
||||||
value: {{ .Values.calico.felixDefaultEndpointToHostAction | quote }}
|
|
||||||
# Disable IPv6 on Kubernetes.
|
|
||||||
- name: FELIX_IPV6SUPPORT
|
|
||||||
value: {{ .Values.calico.felixIpv6Support | quote }}
|
|
||||||
# Set Felix logging to "info"
|
|
||||||
- name: FELIX_LOGSEVERITYSCREEN
|
|
||||||
value: {{ .Values.calico.felixLogSeverityScreen | quote }}
|
|
||||||
- name: FELIX_HEALTHENABLED
|
|
||||||
value: {{ .Values.calico.felixHealthEnabled | quote }}
|
|
||||||
# enable promentheus metrics
|
|
||||||
- name: FELIX_PROMETHEUSMETRICSENABLED
|
|
||||||
value: {{ .Values.calico.felixPrometheusMetricsEnabled | quote }}
|
|
||||||
- name: FELIX_XDPENABLED
|
|
||||||
value: {{ .Values.calico.felixXDPEnabled | quote }}
|
|
||||||
securityContext:
|
|
||||||
privileged: true
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: 250m
|
|
||||||
livenessProbe:
|
|
||||||
exec:
|
|
||||||
command:
|
|
||||||
- /bin/calico-node
|
|
||||||
- -felix-live
|
|
||||||
periodSeconds: 10
|
|
||||||
initialDelaySeconds: 10
|
|
||||||
failureThreshold: 6
|
|
||||||
readinessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /readiness
|
|
||||||
port: 9099
|
|
||||||
host: localhost
|
|
||||||
periodSeconds: 10
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /lib/modules
|
|
||||||
name: lib-modules
|
|
||||||
readOnly: true
|
|
||||||
- mountPath: /run/xtables.lock
|
|
||||||
name: xtables-lock
|
|
||||||
readOnly: false
|
|
||||||
- mountPath: /var/run/calico
|
|
||||||
name: var-run-calico
|
|
||||||
readOnly: false
|
|
||||||
- mountPath: /var/lib/calico
|
|
||||||
name: var-lib-calico
|
|
||||||
readOnly: false
|
|
||||||
- name: policysync
|
|
||||||
mountPath: /var/run/nodeagent
|
|
||||||
# This container runs flannel using the kube-subnet-mgr backend
|
|
||||||
# for allocating subnets.
|
|
||||||
- name: kube-flannel
|
|
||||||
image: {{ template "system_default_registry" . }}{{ .Values.flannel.image.repository }}:{{ .Values.flannel.image.tag }}
|
|
||||||
command:
|
|
||||||
- "/opt/bin/flanneld"
|
|
||||||
{{- range .Values.flannel.args }}
|
|
||||||
- {{ . | quote }}
|
|
||||||
{{- end }}
|
|
||||||
securityContext:
|
|
||||||
privileged: true
|
|
||||||
env:
|
|
||||||
- name: POD_NAME
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: metadata.name
|
|
||||||
- name: POD_NAMESPACE
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: metadata.namespace
|
|
||||||
- name: FLANNELD_IFACE
|
|
||||||
valueFrom:
|
|
||||||
configMapKeyRef:
|
|
||||||
name: {{ .Release.Name }}-config
|
|
||||||
key: canal_iface
|
|
||||||
- name: FLANNELD_IP_MASQ
|
|
||||||
valueFrom:
|
|
||||||
configMapKeyRef:
|
|
||||||
name: {{ .Release.Name }}-config
|
|
||||||
key: masquerade
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /run/xtables.lock
|
|
||||||
name: xtables-lock
|
|
||||||
readOnly: false
|
|
||||||
- name: flannel-cfg
|
|
||||||
mountPath: /etc/kube-flannel/
|
|
||||||
volumes:
|
|
||||||
# Used by canal.
|
|
||||||
- name: lib-modules
|
|
||||||
hostPath:
|
|
||||||
path: /lib/modules
|
|
||||||
- name: var-run-calico
|
|
||||||
hostPath:
|
|
||||||
path: /var/run/calico
|
|
||||||
- name: var-lib-calico
|
|
||||||
hostPath:
|
|
||||||
path: /var/lib/calico
|
|
||||||
- name: xtables-lock
|
|
||||||
hostPath:
|
|
||||||
path: /run/xtables.lock
|
|
||||||
type: FileOrCreate
|
|
||||||
# Used by flannel.
|
|
||||||
- name: flannel-cfg
|
|
||||||
configMap:
|
|
||||||
name: {{ .Release.Name }}-config
|
|
||||||
# Used to install CNI.
|
|
||||||
- name: cni-bin-dir
|
|
||||||
hostPath:
|
|
||||||
path: /opt/cni/bin
|
|
||||||
- name: cni-net-dir
|
|
||||||
hostPath:
|
|
||||||
path: /etc/cni/net.d
|
|
||||||
# Used to create per-pod Unix Domain Sockets
|
|
||||||
- name: policysync
|
|
||||||
hostPath:
|
|
||||||
type: DirectoryOrCreate
|
|
||||||
path: /var/run/nodeagent
|
|
||||||
# Used to install Flex Volume Driver
|
|
||||||
- name: flexvol-driver-host
|
|
||||||
hostPath:
|
|
||||||
type: DirectoryOrCreate
|
|
||||||
path: /usr/libexec/kubernetes/kubelet-plugins/volume/exec/nodeagent~uds
|
|
|
@ -1,163 +0,0 @@
|
||||||
---
|
|
||||||
# Source: calico/templates/rbac.yaml
|
|
||||||
|
|
||||||
# Include a clusterrole for the calico-node DaemonSet,
|
|
||||||
# and bind it to the calico-node serviceaccount.
|
|
||||||
kind: ClusterRole
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: calico-node
|
|
||||||
rules:
|
|
||||||
# The CNI plugin needs to get pods, nodes, and namespaces.
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources:
|
|
||||||
- pods
|
|
||||||
- nodes
|
|
||||||
- namespaces
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources:
|
|
||||||
- endpoints
|
|
||||||
- services
|
|
||||||
verbs:
|
|
||||||
# Used to discover service IPs for advertisement.
|
|
||||||
- watch
|
|
||||||
- list
|
|
||||||
# Used to discover Typhas.
|
|
||||||
- get
|
|
||||||
# Pod CIDR auto-detection on kubeadm needs access to config maps.
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources:
|
|
||||||
- configmaps
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources:
|
|
||||||
- nodes/status
|
|
||||||
verbs:
|
|
||||||
# Needed for clearing NodeNetworkUnavailable flag.
|
|
||||||
- patch
|
|
||||||
# Calico stores some configuration information in node annotations.
|
|
||||||
- update
|
|
||||||
# Watch for changes to Kubernetes NetworkPolicies.
|
|
||||||
- apiGroups: ["networking.k8s.io"]
|
|
||||||
resources:
|
|
||||||
- networkpolicies
|
|
||||||
verbs:
|
|
||||||
- watch
|
|
||||||
- list
|
|
||||||
# Used by Calico for policy information.
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources:
|
|
||||||
- pods
|
|
||||||
- namespaces
|
|
||||||
- serviceaccounts
|
|
||||||
verbs:
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
# The CNI plugin patches pods/status.
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources:
|
|
||||||
- pods/status
|
|
||||||
verbs:
|
|
||||||
- patch
|
|
||||||
# Calico monitors various CRDs for config.
|
|
||||||
- apiGroups: ["crd.projectcalico.org"]
|
|
||||||
resources:
|
|
||||||
- globalfelixconfigs
|
|
||||||
- felixconfigurations
|
|
||||||
- bgppeers
|
|
||||||
- globalbgpconfigs
|
|
||||||
- bgpconfigurations
|
|
||||||
- ippools
|
|
||||||
- ipamblocks
|
|
||||||
- globalnetworkpolicies
|
|
||||||
- globalnetworksets
|
|
||||||
- networkpolicies
|
|
||||||
- networksets
|
|
||||||
- clusterinformations
|
|
||||||
- hostendpoints
|
|
||||||
- blockaffinities
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
# Calico must create and update some CRDs on startup.
|
|
||||||
- apiGroups: ["crd.projectcalico.org"]
|
|
||||||
resources:
|
|
||||||
- ippools
|
|
||||||
- felixconfigurations
|
|
||||||
- clusterinformations
|
|
||||||
verbs:
|
|
||||||
- create
|
|
||||||
- update
|
|
||||||
# Calico stores some configuration information on the node.
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources:
|
|
||||||
- nodes
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
# These permissions are only requried for upgrade from v2.6, and can
|
|
||||||
# be removed after upgrade or on fresh installations.
|
|
||||||
- apiGroups: ["crd.projectcalico.org"]
|
|
||||||
resources:
|
|
||||||
- bgpconfigurations
|
|
||||||
- bgppeers
|
|
||||||
verbs:
|
|
||||||
- create
|
|
||||||
- update
|
|
||||||
|
|
||||||
---
|
|
||||||
# Flannel ClusterRole
|
|
||||||
# Pulled from https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel-rbac.yml
|
|
||||||
kind: ClusterRole
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: flannel
|
|
||||||
rules:
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources:
|
|
||||||
- pods
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources:
|
|
||||||
- nodes
|
|
||||||
verbs:
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources:
|
|
||||||
- nodes/status
|
|
||||||
verbs:
|
|
||||||
- patch
|
|
||||||
---
|
|
||||||
# Bind the flannel ClusterRole to the canal ServiceAccount.
|
|
||||||
kind: ClusterRoleBinding
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: canal-flannel
|
|
||||||
roleRef:
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
kind: ClusterRole
|
|
||||||
name: flannel
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: canal
|
|
||||||
namespace: kube-system
|
|
||||||
---
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRoleBinding
|
|
||||||
metadata:
|
|
||||||
name: canal-calico
|
|
||||||
roleRef:
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
kind: ClusterRole
|
|
||||||
name: calico-node
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: canal
|
|
||||||
namespace: kube-system
|
|
|
@ -1,6 +0,0 @@
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: canal
|
|
||||||
namespace: kube-system
|
|
|
@ -1,74 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
# The IPv4 cidr pool to create on startup if none exists. Pod IPs will be
|
|
||||||
# chosen from this range.
|
|
||||||
podCidr: "10.42.0.0/16"
|
|
||||||
|
|
||||||
flannel:
|
|
||||||
# kube-flannel image
|
|
||||||
image:
|
|
||||||
repository: rancher/hardened-flannel
|
|
||||||
tag: v0.13.0-rancher1-build20210223
|
|
||||||
# The interface used by canal for host <-> host communication.
|
|
||||||
# If left blank, then the interface is chosen using the node's
|
|
||||||
# default route.
|
|
||||||
iface: ""
|
|
||||||
# kube-flannel command arguments
|
|
||||||
args:
|
|
||||||
- "--ip-masq"
|
|
||||||
- "--kube-subnet-mgr"
|
|
||||||
# Backend for kube-flannel. Backend should not be changed
|
|
||||||
# at runtime.
|
|
||||||
backend: "vxlan"
|
|
||||||
|
|
||||||
calico:
|
|
||||||
# CNI installation image.
|
|
||||||
cniImage:
|
|
||||||
repository: rancher/hardened-calico
|
|
||||||
tag: v3.13.3-build20210223
|
|
||||||
# Canal node image.
|
|
||||||
nodeImage:
|
|
||||||
repository: rancher/hardened-calico
|
|
||||||
tag: v3.13.3-build20210223
|
|
||||||
# Flexvol Image.
|
|
||||||
flexvolImage:
|
|
||||||
repository: rancher/hardened-calico
|
|
||||||
tag: v3.13.3-build20210223
|
|
||||||
# Datastore type for canal. It can be either kuberentes or etcd.
|
|
||||||
datastoreType: kubernetes
|
|
||||||
# Wait for datastore to initialize.
|
|
||||||
waitForDatastore: true
|
|
||||||
# Configure route aggregation based on pod CIDR.
|
|
||||||
usePodCIDR: true
|
|
||||||
# Disable BGP routing.
|
|
||||||
networkingBackend: none
|
|
||||||
# Cluster type to identify the deployment type.
|
|
||||||
clusterType: "k8s,canal"
|
|
||||||
# Disable file logging so `kubectl logs` works.
|
|
||||||
disableFileLogging: true
|
|
||||||
# Disable IPv6 on Kubernetes.
|
|
||||||
felixIpv6Support: false
|
|
||||||
# Period, in seconds, at which felix re-applies all iptables state
|
|
||||||
felixIptablesRefreshInterval: 60
|
|
||||||
# iptables backend to use for felix, defaults to auto but can also be set to nft or legacy
|
|
||||||
felixIptablesBackend: auto
|
|
||||||
# Set Felix logging to "info".
|
|
||||||
felixLogSeverityScreen: info
|
|
||||||
# Enable felix healthcheck.
|
|
||||||
felixHealthEnabled: true
|
|
||||||
# Enable prometheus metrics
|
|
||||||
felixPrometheusMetricsEnabled: true
|
|
||||||
# Disable XDP Acceleration as we do not support it with our ubi7 base image
|
|
||||||
felixXDPEnabled: false
|
|
||||||
# Whether or not to masquerade traffic to destinations not within
|
|
||||||
# the pod network.
|
|
||||||
masquerade: true
|
|
||||||
# Set Felix endpoint to host default action to ACCEPT.
|
|
||||||
felixDefaultEndpointToHostAction: ACCEPT
|
|
||||||
# Configure the MTU to use.
|
|
||||||
vethuMTU: 1450
|
|
||||||
# Typha is disabled.
|
|
||||||
typhaServiceName: none
|
|
||||||
|
|
||||||
global:
|
|
||||||
systemDefaultRegistry: ""
|
|
|
@ -1,22 +0,0 @@
|
||||||
# Patterns to ignore when building packages.
|
|
||||||
# This supports shell glob matching, relative path matching, and
|
|
||||||
# negation (prefixed with !). Only one pattern per line.
|
|
||||||
.DS_Store
|
|
||||||
# Common VCS dirs
|
|
||||||
.git/
|
|
||||||
.gitignore
|
|
||||||
.bzr/
|
|
||||||
.bzrignore
|
|
||||||
.hg/
|
|
||||||
.hgignore
|
|
||||||
.svn/
|
|
||||||
# Common backup files
|
|
||||||
*.swp
|
|
||||||
*.bak
|
|
||||||
*.tmp
|
|
||||||
*~
|
|
||||||
# Various IDEs
|
|
||||||
.project
|
|
||||||
.idea/
|
|
||||||
*.tmproj
|
|
||||||
OWNERS
|
|
|
@ -1,23 +0,0 @@
|
||||||
apiVersion: v1
|
|
||||||
appVersion: 1.6.9
|
|
||||||
description: CoreDNS is a DNS server that chains plugins and provides Kubernetes DNS
|
|
||||||
Services
|
|
||||||
home: https://coredns.io
|
|
||||||
icon: https://coredns.io/images/CoreDNS_Colour_Horizontal.png
|
|
||||||
keywords:
|
|
||||||
- coredns
|
|
||||||
- dns
|
|
||||||
- kubedns
|
|
||||||
maintainers:
|
|
||||||
- email: hello@acale.ph
|
|
||||||
name: Acaleph
|
|
||||||
- email: shashidhara.huawei@gmail.com
|
|
||||||
name: shashidharatd
|
|
||||||
- email: andor44@gmail.com
|
|
||||||
name: andor44
|
|
||||||
- email: manuel@rueg.eu
|
|
||||||
name: mrueg
|
|
||||||
name: rke2-coredns
|
|
||||||
sources:
|
|
||||||
- https://github.com/coredns/coredns
|
|
||||||
version: 1.10.101-build2021022302
|
|
|
@ -1,138 +0,0 @@
|
||||||
# CoreDNS
|
|
||||||
|
|
||||||
[CoreDNS](https://coredns.io/) is a DNS server that chains plugins and provides DNS Services
|
|
||||||
|
|
||||||
# TL;DR;
|
|
||||||
|
|
||||||
```console
|
|
||||||
$ helm install --name coredns --namespace=kube-system stable/coredns
|
|
||||||
```
|
|
||||||
|
|
||||||
## Introduction
|
|
||||||
|
|
||||||
This chart bootstraps a [CoreDNS](https://github.com/coredns/coredns) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. This chart will provide DNS Services and can be deployed in multiple configuration to support various scenarios listed below:
|
|
||||||
|
|
||||||
- CoreDNS as a cluster dns service and a drop-in replacement for Kube/SkyDNS. This is the default mode and CoreDNS is deployed as cluster-service in kube-system namespace. This mode is chosen by setting `isClusterService` to true.
|
|
||||||
- CoreDNS as an external dns service. In this mode CoreDNS is deployed as any kubernetes app in user specified namespace. The CoreDNS service can be exposed outside the cluster by using using either the NodePort or LoadBalancer type of service. This mode is chosen by setting `isClusterService` to false.
|
|
||||||
- CoreDNS as an external dns provider for kubernetes federation. This is a sub case of 'external dns service' which uses etcd plugin for CoreDNS backend. This deployment mode as a dependency on `etcd-operator` chart, which needs to be pre-installed.
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
- Kubernetes 1.10 or later
|
|
||||||
|
|
||||||
## Installing the Chart
|
|
||||||
|
|
||||||
The chart can be installed as follows:
|
|
||||||
|
|
||||||
```console
|
|
||||||
$ helm install --name coredns --namespace=kube-system stable/coredns
|
|
||||||
```
|
|
||||||
|
|
||||||
The command deploys CoreDNS on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists various ways to override default configuration during deployment.
|
|
||||||
|
|
||||||
> **Tip**: List all releases using `helm list`
|
|
||||||
|
|
||||||
## Uninstalling the Chart
|
|
||||||
|
|
||||||
To uninstall/delete the `my-release` deployment:
|
|
||||||
|
|
||||||
```console
|
|
||||||
$ helm delete coredns
|
|
||||||
```
|
|
||||||
|
|
||||||
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
|
||||||
|
|
||||||
## Configuration
|
|
||||||
|
|
||||||
| Parameter | Description | Default |
|
|
||||||
|:----------------------------------------|:--------------------------------------------------------------------------------------|:------------------------------------------------------------|
|
|
||||||
| `image.repository` | The image repository to pull from | coredns/coredns |
|
|
||||||
| `image.tag` | The image tag to pull from | `v1.6.9` |
|
|
||||||
| `image.pullPolicy` | Image pull policy | IfNotPresent |
|
|
||||||
| `replicaCount` | Number of replicas | 1 |
|
|
||||||
| `resources.limits.cpu` | Container maximum CPU | `100m` |
|
|
||||||
| `resources.limits.memory` | Container maximum memory | `128Mi` |
|
|
||||||
| `resources.requests.cpu` | Container requested CPU | `100m` |
|
|
||||||
| `resources.requests.memory` | Container requested memory | `128Mi` |
|
|
||||||
| `serviceType` | Kubernetes Service type | `ClusterIP` |
|
|
||||||
| `prometheus.monitor.enabled` | Set this to `true` to create ServiceMonitor for Prometheus operator | `false` |
|
|
||||||
| `prometheus.monitor.additionalLabels` | Additional labels that can be used so ServiceMonitor will be discovered by Prometheus | {} |
|
|
||||||
| `prometheus.monitor.namespace` | Selector to select which namespaces the Endpoints objects are discovered from. | `""` |
|
|
||||||
| `service.clusterIP` | IP address to assign to service | `""` |
|
|
||||||
| `service.loadBalancerIP` | IP address to assign to load balancer (if supported) | `""` |
|
|
||||||
| `service.externalTrafficPolicy` | Enable client source IP preservation | `[]` |
|
|
||||||
| `service.annotations` | Annotations to add to service | `{prometheus.io/scrape: "true", prometheus.io/port: "9153"}`|
|
|
||||||
| `serviceAccount.create` | If true, create & use serviceAccount | false |
|
|
||||||
| `serviceAccount.name` | If not set & create is true, use template fullname | |
|
|
||||||
| `rbac.create` | If true, create & use RBAC resources | true |
|
|
||||||
| `rbac.pspEnable` | Specifies whether a PodSecurityPolicy should be created. | `false` |
|
|
||||||
| `isClusterService` | Specifies whether chart should be deployed as cluster-service or normal k8s app. | true |
|
|
||||||
| `priorityClassName` | Name of Priority Class to assign pods | `""` |
|
|
||||||
| `servers` | Configuration for CoreDNS and plugins | See values.yml |
|
|
||||||
| `affinity` | Affinity settings for pod assignment | {} |
|
|
||||||
| `nodeSelector` | Node labels for pod assignment | {} |
|
|
||||||
| `tolerations` | Tolerations for pod assignment | [] |
|
|
||||||
| `zoneFiles` | Configure custom Zone files | [] |
|
|
||||||
| `extraSecrets` | Optional array of secrets to mount inside the CoreDNS container | [] |
|
|
||||||
| `customLabels` | Optional labels for Deployment(s), Pod, Service, ServiceMonitor objects | {} |
|
|
||||||
| `podDisruptionBudget` | Optional PodDisruptionBudget | {} |
|
|
||||||
| `autoscaler.enabled` | Optionally enabled a cluster-proportional-autoscaler for CoreDNS | `false` |
|
|
||||||
| `autoscaler.coresPerReplica` | Number of cores in the cluster per CoreDNS replica | `256` |
|
|
||||||
| `autoscaler.nodesPerReplica` | Number of nodes in the cluster per CoreDNS replica | `16` |
|
|
||||||
| `autoscaler.image.repository` | The image repository to pull autoscaler from | k8s.gcr.io/cluster-proportional-autoscaler-amd64 |
|
|
||||||
| `autoscaler.image.tag` | The image tag to pull autoscaler from | `1.7.1` |
|
|
||||||
| `autoscaler.image.pullPolicy` | Image pull policy for the autoscaler | IfNotPresent |
|
|
||||||
| `autoscaler.priorityClassName` | Optional priority class for the autoscaler pod. `priorityClassName` used if not set. | `""` |
|
|
||||||
| `autoscaler.affinity` | Affinity settings for pod assignment for autoscaler | {} |
|
|
||||||
| `autoscaler.nodeSelector` | Node labels for pod assignment for autoscaler | {} |
|
|
||||||
| `autoscaler.tolerations` | Tolerations for pod assignment for autoscaler | [] |
|
|
||||||
| `autoscaler.resources.limits.cpu` | Container maximum CPU for cluster-proportional-autoscaler | `20m` |
|
|
||||||
| `autoscaler.resources.limits.memory` | Container maximum memory for cluster-proportional-autoscaler | `10Mi` |
|
|
||||||
| `autoscaler.resources.requests.cpu` | Container requested CPU for cluster-proportional-autoscaler | `20m` |
|
|
||||||
| `autoscaler.resources.requests.memory` | Container requested memory for cluster-proportional-autoscaler | `10Mi` |
|
|
||||||
| `autoscaler.configmap.annotations` | Annotations to add to autoscaler config map. For example to stop CI renaming them | {} |
|
|
||||||
|
|
||||||
See `values.yaml` for configuration notes. Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
|
||||||
|
|
||||||
```console
|
|
||||||
$ helm install --name coredns \
|
|
||||||
--set rbac.create=false \
|
|
||||||
stable/coredns
|
|
||||||
```
|
|
||||||
|
|
||||||
The above command disables automatic creation of RBAC rules.
|
|
||||||
|
|
||||||
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
|
|
||||||
|
|
||||||
```console
|
|
||||||
$ helm install --name coredns -f values.yaml stable/coredns
|
|
||||||
```
|
|
||||||
|
|
||||||
> **Tip**: You can use the default [values.yaml](values.yaml)
|
|
||||||
|
|
||||||
|
|
||||||
## Caveats
|
|
||||||
|
|
||||||
The chart will automatically determine which protocols to listen on based on
|
|
||||||
the protocols you define in your zones. This means that you could potentially
|
|
||||||
use both "TCP" and "UDP" on a single port.
|
|
||||||
Some cloud environments like "GCE" or "Azure container service" cannot
|
|
||||||
create external loadbalancers with both "TCP" and "UDP" protocols. So
|
|
||||||
When deploying CoreDNS with `serviceType="LoadBalancer"` on such cloud
|
|
||||||
environments, make sure you do not attempt to use both protocols at the same
|
|
||||||
time.
|
|
||||||
|
|
||||||
## Autoscaling
|
|
||||||
|
|
||||||
By setting `autoscaler.enabled = true` a
|
|
||||||
[cluster-proportional-autoscaler](https://github.com/kubernetes-incubator/cluster-proportional-autoscaler)
|
|
||||||
will be deployed. This will default to a coredns replica for every 256 cores, or
|
|
||||||
16 nodes in the cluster. These can be changed with `autoscaler.coresPerReplica`
|
|
||||||
and `autoscaler.nodesPerReplica`. When cluster is using large nodes (with more
|
|
||||||
cores), `coresPerReplica` should dominate. If using small nodes,
|
|
||||||
`nodesPerReplica` should dominate.
|
|
||||||
|
|
||||||
This also creates a ServiceAccount, ClusterRole, and ClusterRoleBinding for
|
|
||||||
the autoscaler deployment.
|
|
||||||
|
|
||||||
`replicaCount` is ignored if this is enabled.
|
|
|
@ -1,30 +0,0 @@
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
CoreDNS is now running in the cluster as a cluster-service.
|
|
||||||
{{- else }}
|
|
||||||
CoreDNS is now running in the cluster.
|
|
||||||
It can be accessed using the below endpoint
|
|
||||||
{{- if contains "NodePort" .Values.serviceType }}
|
|
||||||
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "coredns.fullname" . }})
|
|
||||||
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
|
||||||
echo "$NODE_IP:$NODE_PORT"
|
|
||||||
{{- else if contains "LoadBalancer" .Values.serviceType }}
|
|
||||||
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
|
||||||
You can watch the status by running 'kubectl get svc -w {{ template "coredns.fullname" . }}'
|
|
||||||
|
|
||||||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "coredns.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
|
|
||||||
echo $SERVICE_IP
|
|
||||||
{{- else if contains "ClusterIP" .Values.serviceType }}
|
|
||||||
"{{ template "coredns.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local"
|
|
||||||
from within the cluster
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
It can be tested with the following:
|
|
||||||
|
|
||||||
1. Launch a Pod with DNS tools:
|
|
||||||
|
|
||||||
kubectl run -it --rm --restart=Never --image=infoblox/dnstools:latest dnstools
|
|
||||||
|
|
||||||
2. Query the DNS server:
|
|
||||||
|
|
||||||
/ # host kubernetes
|
|
|
@ -1,158 +0,0 @@
|
||||||
{{/* vim: set filetype=mustache: */}}
|
|
||||||
{{/*
|
|
||||||
Expand the name of the chart.
|
|
||||||
*/}}
|
|
||||||
{{- define "coredns.name" -}}
|
|
||||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create a default fully qualified app name.
|
|
||||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
|
||||||
*/}}
|
|
||||||
{{- define "coredns.fullname" -}}
|
|
||||||
{{- if .Values.fullnameOverride -}}
|
|
||||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
|
||||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Generate the list of ports automatically from the server definitions
|
|
||||||
*/}}
|
|
||||||
{{- define "coredns.servicePorts" -}}
|
|
||||||
{{/* Set ports to be an empty dict */}}
|
|
||||||
{{- $ports := dict -}}
|
|
||||||
{{/* Iterate through each of the server blocks */}}
|
|
||||||
{{- range .Values.servers -}}
|
|
||||||
{{/* Capture port to avoid scoping awkwardness */}}
|
|
||||||
{{- $port := toString .port -}}
|
|
||||||
|
|
||||||
{{/* If none of the server blocks has mentioned this port yet take note of it */}}
|
|
||||||
{{- if not (hasKey $ports $port) -}}
|
|
||||||
{{- $ports := set $ports $port (dict "istcp" false "isudp" false) -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{/* Retrieve the inner dict that holds the protocols for a given port */}}
|
|
||||||
{{- $innerdict := index $ports $port -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Look at each of the zones and check which protocol they serve
|
|
||||||
At the moment the following are supported by CoreDNS:
|
|
||||||
UDP: dns://
|
|
||||||
TCP: tls://, grpc://
|
|
||||||
*/}}
|
|
||||||
{{- range .zones -}}
|
|
||||||
{{- if has (default "" .scheme) (list "dns://") -}}
|
|
||||||
{{/* Optionally enable tcp for this service as well */}}
|
|
||||||
{{- if eq .use_tcp true }}
|
|
||||||
{{- $innerdict := set $innerdict "istcp" true -}}
|
|
||||||
{{- end }}
|
|
||||||
{{- $innerdict := set $innerdict "isudp" true -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- if has (default "" .scheme) (list "tls://" "grpc://") -}}
|
|
||||||
{{- $innerdict := set $innerdict "istcp" true -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/* If none of the zones specify scheme, default to dns:// on both tcp & udp */}}
|
|
||||||
{{- if and (not (index $innerdict "istcp")) (not (index $innerdict "isudp")) -}}
|
|
||||||
{{- $innerdict := set $innerdict "isudp" true -}}
|
|
||||||
{{- $innerdict := set $innerdict "istcp" true -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/* Write the dict back into the outer dict */}}
|
|
||||||
{{- $ports := set $ports $port $innerdict -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/* Write out the ports according to the info collected above */}}
|
|
||||||
{{- range $port, $innerdict := $ports -}}
|
|
||||||
{{- if index $innerdict "isudp" -}}
|
|
||||||
{{- printf "- {port: %v, protocol: UDP, name: udp-%s}\n" $port $port -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- if index $innerdict "istcp" -}}
|
|
||||||
{{- printf "- {port: %v, protocol: TCP, name: tcp-%s}\n" $port $port -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Generate the list of ports automatically from the server definitions
|
|
||||||
*/}}
|
|
||||||
{{- define "coredns.containerPorts" -}}
|
|
||||||
{{/* Set ports to be an empty dict */}}
|
|
||||||
{{- $ports := dict -}}
|
|
||||||
{{/* Iterate through each of the server blocks */}}
|
|
||||||
{{- range .Values.servers -}}
|
|
||||||
{{/* Capture port to avoid scoping awkwardness */}}
|
|
||||||
{{- $port := toString .port -}}
|
|
||||||
|
|
||||||
{{/* If none of the server blocks has mentioned this port yet take note of it */}}
|
|
||||||
{{- if not (hasKey $ports $port) -}}
|
|
||||||
{{- $ports := set $ports $port (dict "istcp" false "isudp" false) -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{/* Retrieve the inner dict that holds the protocols for a given port */}}
|
|
||||||
{{- $innerdict := index $ports $port -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Look at each of the zones and check which protocol they serve
|
|
||||||
At the moment the following are supported by CoreDNS:
|
|
||||||
UDP: dns://
|
|
||||||
TCP: tls://, grpc://
|
|
||||||
*/}}
|
|
||||||
{{- range .zones -}}
|
|
||||||
{{- if has (default "" .scheme) (list "dns://") -}}
|
|
||||||
{{/* Optionally enable tcp for this service as well */}}
|
|
||||||
{{- if eq .use_tcp true }}
|
|
||||||
{{- $innerdict := set $innerdict "istcp" true -}}
|
|
||||||
{{- end }}
|
|
||||||
{{- $innerdict := set $innerdict "isudp" true -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- if has (default "" .scheme) (list "tls://" "grpc://") -}}
|
|
||||||
{{- $innerdict := set $innerdict "istcp" true -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/* If none of the zones specify scheme, default to dns:// on both tcp & udp */}}
|
|
||||||
{{- if and (not (index $innerdict "istcp")) (not (index $innerdict "isudp")) -}}
|
|
||||||
{{- $innerdict := set $innerdict "isudp" true -}}
|
|
||||||
{{- $innerdict := set $innerdict "istcp" true -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/* Write the dict back into the outer dict */}}
|
|
||||||
{{- $ports := set $ports $port $innerdict -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/* Write out the ports according to the info collected above */}}
|
|
||||||
{{- range $port, $innerdict := $ports -}}
|
|
||||||
{{- if index $innerdict "isudp" -}}
|
|
||||||
{{- printf "- {containerPort: %v, protocol: UDP, name: udp-%s}\n" $port $port -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- if index $innerdict "istcp" -}}
|
|
||||||
{{- printf "- {containerPort: %v, protocol: TCP, name: tcp-%s}\n" $port $port -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create the name of the service account to use
|
|
||||||
*/}}
|
|
||||||
{{- define "coredns.serviceAccountName" -}}
|
|
||||||
{{- if .Values.serviceAccount.create -}}
|
|
||||||
{{ default (include "coredns.fullname" .) .Values.serviceAccount.name }}
|
|
||||||
{{- else -}}
|
|
||||||
{{ default "default" .Values.serviceAccount.name }}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- define "system_default_registry" -}}
|
|
||||||
{{- if .Values.global.systemDefaultRegistry -}}
|
|
||||||
{{- printf "%s/" .Values.global.systemDefaultRegistry -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- "" -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
|
@ -1,35 +0,0 @@
|
||||||
{{- if and .Values.autoscaler.enabled .Values.rbac.create }}
|
|
||||||
---
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRole
|
|
||||||
metadata:
|
|
||||||
name: {{ template "coredns.fullname" . }}-autoscaler
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name }}-autoscaler
|
|
||||||
kubernetes.io/cluster-service: "true"
|
|
||||||
kubernetes.io/name: "CoreDNS"
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}-autoscaler
|
|
||||||
{{- if .Values.customLabels }}
|
|
||||||
{{ toYaml .Values.customLabels | indent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
rules:
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["nodes"]
|
|
||||||
verbs: ["list","watch"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["replicationcontrollers/scale"]
|
|
||||||
verbs: ["get", "update"]
|
|
||||||
- apiGroups: ["extensions", "apps"]
|
|
||||||
resources: ["deployments/scale", "replicasets/scale"]
|
|
||||||
verbs: ["get", "update"]
|
|
||||||
# Remove the configmaps rule once below issue is fixed:
|
|
||||||
# kubernetes-incubator/cluster-proportional-autoscaler#16
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["configmaps"]
|
|
||||||
verbs: ["get", "create"]
|
|
||||||
{{- end }}
|
|
|
@ -1,38 +0,0 @@
|
||||||
{{- if .Values.rbac.create }}
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRole
|
|
||||||
metadata:
|
|
||||||
name: {{ template "coredns.fullname" . }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name | quote }}
|
|
||||||
kubernetes.io/cluster-service: "true"
|
|
||||||
kubernetes.io/name: "CoreDNS"
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}
|
|
||||||
rules:
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- endpoints
|
|
||||||
- services
|
|
||||||
- pods
|
|
||||||
- namespaces
|
|
||||||
verbs:
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
{{- if .Values.rbac.pspEnable }}
|
|
||||||
- apiGroups:
|
|
||||||
- policy
|
|
||||||
- extensions
|
|
||||||
resources:
|
|
||||||
- podsecuritypolicies
|
|
||||||
verbs:
|
|
||||||
- use
|
|
||||||
resourceNames:
|
|
||||||
- {{ template "coredns.fullname" . }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
|
@ -1,28 +0,0 @@
|
||||||
{{- if and .Values.autoscaler.enabled .Values.rbac.create }}
|
|
||||||
---
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRoleBinding
|
|
||||||
metadata:
|
|
||||||
name: {{ template "coredns.fullname" . }}-autoscaler
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name }}-autoscaler
|
|
||||||
kubernetes.io/cluster-service: "true"
|
|
||||||
kubernetes.io/name: "CoreDNS"
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}-autoscaler
|
|
||||||
{{- if .Values.customLabels }}
|
|
||||||
{{ toYaml .Values.customLabels | indent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
roleRef:
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
kind: ClusterRole
|
|
||||||
name: {{ template "coredns.fullname" . }}-autoscaler
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: {{ template "coredns.fullname" . }}-autoscaler
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
{{- end }}
|
|
|
@ -1,24 +0,0 @@
|
||||||
{{- if .Values.rbac.create }}
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRoleBinding
|
|
||||||
metadata:
|
|
||||||
name: {{ template "coredns.fullname" . }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name | quote }}
|
|
||||||
kubernetes.io/cluster-service: "true"
|
|
||||||
kubernetes.io/name: "CoreDNS"
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}
|
|
||||||
roleRef:
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
kind: ClusterRole
|
|
||||||
name: {{ template "coredns.fullname" . }}
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: {{ template "coredns.serviceAccountName" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
{{- end }}
|
|
|
@ -1,34 +0,0 @@
|
||||||
{{- if .Values.autoscaler.enabled }}
|
|
||||||
---
|
|
||||||
kind: ConfigMap
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: {{ template "coredns.fullname" . }}-autoscaler
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name }}-autoscaler
|
|
||||||
kubernetes.io/cluster-service: "true"
|
|
||||||
kubernetes.io/name: "CoreDNS"
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}-autoscaler
|
|
||||||
{{- if .Values.customLabels }}
|
|
||||||
{{- toYaml .Values.customLabels | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.autoscaler.configmap.annotations }}
|
|
||||||
annotations:
|
|
||||||
{{- toYaml .Values.autoscaler.configmap.annotations | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
data:
|
|
||||||
# When cluster is using large nodes(with more cores), "coresPerReplica" should dominate.
|
|
||||||
# If using small nodes, "nodesPerReplica" should dominate.
|
|
||||||
linear: |-
|
|
||||||
{
|
|
||||||
"coresPerReplica": {{ .Values.autoscaler.coresPerReplica | float64 }},
|
|
||||||
"nodesPerReplica": {{ .Values.autoscaler.nodesPerReplica | float64 }},
|
|
||||||
"preventSinglePointFailure": true
|
|
||||||
}
|
|
||||||
{{- end }}
|
|
|
@ -1,30 +0,0 @@
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: {{ template "coredns.fullname" . }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name | quote }}
|
|
||||||
kubernetes.io/cluster-service: "true"
|
|
||||||
kubernetes.io/name: "CoreDNS"
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}
|
|
||||||
data:
|
|
||||||
Corefile: |-
|
|
||||||
{{ range .Values.servers }}
|
|
||||||
{{- range $idx, $zone := .zones }}{{ if $idx }} {{ else }}{{ end }}{{ default "" $zone.scheme }}{{ default "." $zone.zone }}{{ else }}.{{ end -}}
|
|
||||||
{{- if .port }}:{{ .port }} {{ end -}}
|
|
||||||
{
|
|
||||||
{{- range .plugins }}
|
|
||||||
{{ .name }} {{ if .parameters }} {{if eq .name "kubernetes" }} {{ (lookup "v1" "ConfigMap" "kube-system" "cluster-dns").data.clusterDomain }} {{ end }} {{.parameters}}{{ end }}{{ if .configBlock }} {
|
|
||||||
{{ .configBlock | indent 12 }}
|
|
||||||
}{{ end }}
|
|
||||||
{{- end }}
|
|
||||||
}
|
|
||||||
{{ end }}
|
|
||||||
{{- range .Values.zoneFiles }}
|
|
||||||
{{ .filename }}: {{ toYaml .contents | indent 4 }}
|
|
||||||
{{- end }}
|
|
|
@ -1,77 +0,0 @@
|
||||||
{{- if .Values.autoscaler.enabled }}
|
|
||||||
---
|
|
||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: {{ template "coredns.fullname" . }}-autoscaler
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name }}-autoscaler
|
|
||||||
kubernetes.io/cluster-service: "true"
|
|
||||||
kubernetes.io/name: "CoreDNS"
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}-autoscaler
|
|
||||||
{{- if .Values.customLabels }}
|
|
||||||
{{ toYaml .Values.customLabels | indent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name }}-autoscaler
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}-autoscaler
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name }}-autoscaler
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}-autoscaler
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
{{- if .Values.customLabels }}
|
|
||||||
{{ toYaml .Values.customLabels | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
annotations:
|
|
||||||
checksum/configmap: {{ include (print $.Template.BasePath "/configmap-autoscaler.yaml") . | sha256sum }}
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
scheduler.alpha.kubernetes.io/critical-pod: ''
|
|
||||||
scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]'
|
|
||||||
{{- end }}
|
|
||||||
spec:
|
|
||||||
serviceAccountName: {{ template "coredns.fullname" . }}-autoscaler
|
|
||||||
{{- $priorityClassName := default .Values.priorityClassName .Values.autoscaler.priorityClassName }}
|
|
||||||
{{- if $priorityClassName }}
|
|
||||||
priorityClassName: {{ $priorityClassName | quote }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.autoscaler.affinity }}
|
|
||||||
affinity:
|
|
||||||
{{ toYaml .Values.autoscaler.affinity | indent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.autoscaler.tolerations }}
|
|
||||||
tolerations:
|
|
||||||
{{ toYaml .Values.autoscaler.tolerations | indent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.autoscaler.nodeSelector }}
|
|
||||||
nodeSelector:
|
|
||||||
{{ toYaml .Values.autoscaler.nodeSelector | indent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
containers:
|
|
||||||
- name: autoscaler
|
|
||||||
image: {{ template "system_default_registry" . }}{{ .Values.autoscaler.image.repository }}:{{ .Values.autoscaler.image.tag }}
|
|
||||||
imagePullPolicy: {{ .Values.autoscaler.image.pullPolicy }}
|
|
||||||
resources:
|
|
||||||
{{ toYaml .Values.autoscaler.resources | indent 10 }}
|
|
||||||
command:
|
|
||||||
- /cluster-proportional-autoscaler
|
|
||||||
- --namespace={{ .Release.Namespace }}
|
|
||||||
- --configmap={{ template "coredns.fullname" . }}-autoscaler
|
|
||||||
- --target=Deployment/{{ template "coredns.fullname" . }}
|
|
||||||
- --logtostderr=true
|
|
||||||
- --v=2
|
|
||||||
{{- end }}
|
|
|
@ -1,127 +0,0 @@
|
||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: {{ template "coredns.fullname" . }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name | quote }}
|
|
||||||
kubernetes.io/cluster-service: "true"
|
|
||||||
kubernetes.io/name: "CoreDNS"
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}
|
|
||||||
{{- if .Values.customLabels }}
|
|
||||||
{{ toYaml .Values.customLabels | indent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
spec:
|
|
||||||
{{- if not .Values.autoscaler.enabled }}
|
|
||||||
replicas: {{ .Values.replicaCount }}
|
|
||||||
{{- end }}
|
|
||||||
strategy:
|
|
||||||
type: RollingUpdate
|
|
||||||
rollingUpdate:
|
|
||||||
maxUnavailable: 1
|
|
||||||
maxSurge: 10%
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name | quote }}
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name | quote }}
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
{{- if .Values.customLabels }}
|
|
||||||
{{ toYaml .Values.customLabels | indent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
annotations:
|
|
||||||
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
scheduler.alpha.kubernetes.io/critical-pod: ''
|
|
||||||
{{- end }}
|
|
||||||
spec:
|
|
||||||
serviceAccountName: {{ template "coredns.serviceAccountName" . }}
|
|
||||||
{{- if .Values.priorityClassName }}
|
|
||||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
dnsPolicy: Default
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.affinity }}
|
|
||||||
affinity:
|
|
||||||
{{ toYaml .Values.affinity | indent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if or (.Values.isClusterService) (.Values.tolerations) }}
|
|
||||||
tolerations:
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
- key: CriticalAddonsOnly
|
|
||||||
operator: Exists
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.tolerations }}
|
|
||||||
{{ toYaml .Values.tolerations | indent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.nodeSelector }}
|
|
||||||
nodeSelector:
|
|
||||||
{{ toYaml .Values.nodeSelector | indent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
containers:
|
|
||||||
- name: "coredns"
|
|
||||||
image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}
|
|
||||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
|
||||||
args: [ "-conf", "/etc/coredns/Corefile" ]
|
|
||||||
volumeMounts:
|
|
||||||
- name: config-volume
|
|
||||||
mountPath: /etc/coredns
|
|
||||||
{{- range .Values.extraSecrets }}
|
|
||||||
- name: {{ .name }}
|
|
||||||
mountPath: {{ .mountPath }}
|
|
||||||
readOnly: true
|
|
||||||
{{- end }}
|
|
||||||
resources:
|
|
||||||
{{ toYaml .Values.resources | indent 10 }}
|
|
||||||
ports:
|
|
||||||
{{ include "coredns.containerPorts" . | indent 8 }}
|
|
||||||
livenessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /health
|
|
||||||
port: 8080
|
|
||||||
scheme: HTTP
|
|
||||||
initialDelaySeconds: 60
|
|
||||||
timeoutSeconds: 5
|
|
||||||
successThreshold: 1
|
|
||||||
failureThreshold: 5
|
|
||||||
readinessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /ready
|
|
||||||
port: 8181
|
|
||||||
scheme: HTTP
|
|
||||||
initialDelaySeconds: 10
|
|
||||||
timeoutSeconds: 5
|
|
||||||
successThreshold: 1
|
|
||||||
failureThreshold: 5
|
|
||||||
volumes:
|
|
||||||
- name: config-volume
|
|
||||||
configMap:
|
|
||||||
name: {{ template "coredns.fullname" . }}
|
|
||||||
items:
|
|
||||||
- key: Corefile
|
|
||||||
path: Corefile
|
|
||||||
{{ range .Values.zoneFiles }}
|
|
||||||
- key: {{ .filename }}
|
|
||||||
path: {{ .filename }}
|
|
||||||
{{ end }}
|
|
||||||
{{- range .Values.extraSecrets }}
|
|
||||||
- name: {{ .name }}
|
|
||||||
secret:
|
|
||||||
secretName: {{ .name }}
|
|
||||||
defaultMode: 400
|
|
||||||
{{- end }}
|
|
|
@ -1,28 +0,0 @@
|
||||||
{{- if .Values.podDisruptionBudget -}}
|
|
||||||
apiVersion: policy/v1beta1
|
|
||||||
kind: PodDisruptionBudget
|
|
||||||
metadata:
|
|
||||||
name: {{ template "coredns.fullname" . }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name | quote }}
|
|
||||||
kubernetes.io/cluster-service: "true"
|
|
||||||
kubernetes.io/name: "CoreDNS"
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}
|
|
||||||
{{- if .Values.customLabels }}
|
|
||||||
{{ toYaml .Values.customLabels | indent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name | quote }}
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}
|
|
||||||
{{ toYaml .Values.podDisruptionBudget | indent 2 }}
|
|
||||||
{{- end }}
|
|
|
@ -1,57 +0,0 @@
|
||||||
{{- if .Values.rbac.pspEnable }}
|
|
||||||
{{ if .Capabilities.APIVersions.Has "policy/v1beta1" }}
|
|
||||||
apiVersion: policy/v1beta1
|
|
||||||
{{ else }}
|
|
||||||
apiVersion: extensions/v1beta1
|
|
||||||
{{ end -}}
|
|
||||||
kind: PodSecurityPolicy
|
|
||||||
metadata:
|
|
||||||
name: {{ template "coredns.fullname" . }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name | quote }}
|
|
||||||
kubernetes.io/cluster-service: "true"
|
|
||||||
kubernetes.io/name: "CoreDNS"
|
|
||||||
{{- else }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}
|
|
||||||
{{- end }}
|
|
||||||
spec:
|
|
||||||
privileged: false
|
|
||||||
# Required to prevent escalations to root.
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
# Add back CAP_NET_BIND_SERVICE so that coredns can run on port 53
|
|
||||||
allowedCapabilities:
|
|
||||||
- CAP_NET_BIND_SERVICE
|
|
||||||
# Allow core volume types.
|
|
||||||
volumes:
|
|
||||||
- 'configMap'
|
|
||||||
- 'emptyDir'
|
|
||||||
- 'projected'
|
|
||||||
- 'secret'
|
|
||||||
- 'downwardAPI'
|
|
||||||
hostNetwork: false
|
|
||||||
hostIPC: false
|
|
||||||
hostPID: false
|
|
||||||
runAsUser:
|
|
||||||
# Require the container to run without root privileges.
|
|
||||||
rule: 'RunAsAny'
|
|
||||||
seLinux:
|
|
||||||
# This policy assumes the nodes are using AppArmor rather than SELinux.
|
|
||||||
rule: 'RunAsAny'
|
|
||||||
supplementalGroups:
|
|
||||||
rule: 'MustRunAs'
|
|
||||||
ranges:
|
|
||||||
# Forbid adding the root group.
|
|
||||||
- min: 1
|
|
||||||
max: 65535
|
|
||||||
fsGroup:
|
|
||||||
rule: 'MustRunAs'
|
|
||||||
ranges:
|
|
||||||
# Forbid adding the root group.
|
|
||||||
- min: 1
|
|
||||||
max: 65535
|
|
||||||
readOnlyRootFilesystem: false
|
|
||||||
{{- end }}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{{- if .Values.prometheus.monitor.enabled }}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: {{ template "coredns.fullname" . }}-metrics
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name | quote }}
|
|
||||||
kubernetes.io/cluster-service: "true"
|
|
||||||
kubernetes.io/name: "CoreDNS"
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}
|
|
||||||
app.kubernetes.io/component: metrics
|
|
||||||
{{- if .Values.customLabels }}
|
|
||||||
{{ toYaml .Values.customLabels | indent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
annotations:
|
|
||||||
{{ toYaml .Values.service.annotations | indent 4 }}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name | quote }}
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}
|
|
||||||
ports:
|
|
||||||
- name: metrics
|
|
||||||
port: 9153
|
|
||||||
targetPort: 9153
|
|
||||||
{{- end }}
|
|
|
@ -1,40 +0,0 @@
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: {{ template "coredns.fullname" . }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name | quote }}
|
|
||||||
kubernetes.io/cluster-service: "true"
|
|
||||||
kubernetes.io/name: "CoreDNS"
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}
|
|
||||||
{{- if .Values.customLabels }}
|
|
||||||
{{ toYaml .Values.customLabels | indent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
annotations:
|
|
||||||
{{ toYaml .Values.service.annotations | indent 4 }}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name | quote }}
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}
|
|
||||||
{{- if .Values.service.clusterIP }}
|
|
||||||
clusterIP: {{ .Values.service.clusterIP }}
|
|
||||||
{{ else }}
|
|
||||||
clusterIP: {{ (lookup "v1" "ConfigMap" "kube-system" "cluster-dns").data.clusterDNS }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.service.externalTrafficPolicy }}
|
|
||||||
externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.service.loadBalancerIP }}
|
|
||||||
loadBalancerIP: {{ .Values.service.loadBalancerIP }}
|
|
||||||
{{- end }}
|
|
||||||
ports:
|
|
||||||
{{ include "coredns.servicePorts" . | indent 2 -}}
|
|
||||||
type: {{ default "ClusterIP" .Values.serviceType }}
|
|
|
@ -1,21 +0,0 @@
|
||||||
{{- if and .Values.autoscaler.enabled .Values.rbac.create }}
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: {{ template "coredns.fullname" . }}-autoscaler
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name }}-autoscaler
|
|
||||||
kubernetes.io/cluster-service: "true"
|
|
||||||
kubernetes.io/name: "CoreDNS"
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}-autoscaler
|
|
||||||
{{- if .Values.customLabels }}
|
|
||||||
{{ toYaml .Values.customLabels | indent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
|
@ -1,16 +0,0 @@
|
||||||
{{- if .Values.serviceAccount.create }}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: {{ template "coredns.serviceAccountName" . }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name | quote }}
|
|
||||||
kubernetes.io/cluster-service: "true"
|
|
||||||
kubernetes.io/name: "CoreDNS"
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}
|
|
||||||
{{- end }}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{{- if .Values.prometheus.monitor.enabled }}
|
|
||||||
apiVersion: monitoring.coreos.com/v1
|
|
||||||
kind: ServiceMonitor
|
|
||||||
metadata:
|
|
||||||
name: {{ template "coredns.fullname" . }}
|
|
||||||
{{- if .Values.prometheus.monitor.namespace }}
|
|
||||||
namespace: {{ .Values.prometheus.monitor.namespace }}
|
|
||||||
{{- end }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name | quote }}
|
|
||||||
kubernetes.io/cluster-service: "true"
|
|
||||||
kubernetes.io/name: "CoreDNS"
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}
|
|
||||||
{{- if .Values.prometheus.monitor.additionalLabels }}
|
|
||||||
{{ toYaml .Values.prometheus.monitor.additionalLabels | indent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
||||||
{{- if .Values.isClusterService }}
|
|
||||||
k8s-app: {{ .Values.k8sApp | default .Chart.Name | quote }}
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/name: {{ template "coredns.name" . }}
|
|
||||||
app.kubernetes.io/component: metrics
|
|
||||||
endpoints:
|
|
||||||
- port: metrics
|
|
||||||
{{- end }}
|
|
|
@ -1,202 +0,0 @@
|
||||||
# Default values for coredns.
|
|
||||||
# This is a YAML-formatted file.
|
|
||||||
# Declare variables to be passed into your templates.
|
|
||||||
|
|
||||||
image:
|
|
||||||
repository: rancher/hardened-coredns
|
|
||||||
tag: "v1.6.9-build20210223"
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
replicaCount: 1
|
|
||||||
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpu: 100m
|
|
||||||
memory: 128Mi
|
|
||||||
requests:
|
|
||||||
cpu: 100m
|
|
||||||
memory: 128Mi
|
|
||||||
|
|
||||||
serviceType: "ClusterIP"
|
|
||||||
|
|
||||||
prometheus:
|
|
||||||
monitor:
|
|
||||||
enabled: false
|
|
||||||
additionalLabels: {}
|
|
||||||
namespace: ""
|
|
||||||
|
|
||||||
service:
|
|
||||||
# clusterIP: ""
|
|
||||||
# loadBalancerIP: ""
|
|
||||||
# externalTrafficPolicy: ""
|
|
||||||
annotations:
|
|
||||||
prometheus.io/scrape: "true"
|
|
||||||
prometheus.io/port: "9153"
|
|
||||||
|
|
||||||
serviceAccount:
|
|
||||||
create: true
|
|
||||||
# The name of the ServiceAccount to use
|
|
||||||
# If not set and create is true, a name is generated using the fullname template
|
|
||||||
name: coredns
|
|
||||||
|
|
||||||
rbac:
|
|
||||||
# If true, create & use RBAC resources
|
|
||||||
create: true
|
|
||||||
# If true, create and use PodSecurityPolicy
|
|
||||||
pspEnable: false
|
|
||||||
# The name of the ServiceAccount to use.
|
|
||||||
# If not set and create is true, a name is generated using the fullname template
|
|
||||||
# name:
|
|
||||||
|
|
||||||
# isClusterService specifies whether chart should be deployed as cluster-service or normal k8s app.
|
|
||||||
isClusterService: true
|
|
||||||
|
|
||||||
# Optional priority class to be used for the coredns pods. Used for autoscaler if autoscaler.priorityClassName not set.
|
|
||||||
priorityClassName: "system-cluster-critical"
|
|
||||||
|
|
||||||
# Default zone is what Kubernetes recommends:
|
|
||||||
# https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#coredns-configmap-options
|
|
||||||
servers:
|
|
||||||
- zones:
|
|
||||||
- zone: .
|
|
||||||
port: 53
|
|
||||||
plugins:
|
|
||||||
- name: errors
|
|
||||||
# Serves a /health endpoint on :8080, required for livenessProbe
|
|
||||||
- name: health
|
|
||||||
configBlock: |-
|
|
||||||
lameduck 5s
|
|
||||||
# Serves a /ready endpoint on :8181, required for readinessProbe
|
|
||||||
- name: ready
|
|
||||||
# Required to query kubernetes API for data
|
|
||||||
- name: kubernetes
|
|
||||||
parameters: cluster.local in-addr.arpa ip6.arpa
|
|
||||||
configBlock: |-
|
|
||||||
pods insecure
|
|
||||||
fallthrough in-addr.arpa ip6.arpa
|
|
||||||
ttl 30
|
|
||||||
# Serves a /metrics endpoint on :9153, required for serviceMonitor
|
|
||||||
- name: prometheus
|
|
||||||
parameters: 0.0.0.0:9153
|
|
||||||
- name: forward
|
|
||||||
parameters: . /etc/resolv.conf
|
|
||||||
- name: cache
|
|
||||||
parameters: 30
|
|
||||||
- name: loop
|
|
||||||
- name: reload
|
|
||||||
- name: loadbalance
|
|
||||||
|
|
||||||
# Complete example with all the options:
|
|
||||||
# - zones: # the `zones` block can be left out entirely, defaults to "."
|
|
||||||
# - zone: hello.world. # optional, defaults to "."
|
|
||||||
# scheme: tls:// # optional, defaults to "" (which equals "dns://" in CoreDNS)
|
|
||||||
# - zone: foo.bar.
|
|
||||||
# scheme: dns://
|
|
||||||
# use_tcp: true # set this parameter to optionally expose the port on tcp as well as udp for the DNS protocol
|
|
||||||
# # Note that this will not work if you are also exposing tls or grpc on the same server
|
|
||||||
# port: 12345 # optional, defaults to "" (which equals 53 in CoreDNS)
|
|
||||||
# plugins: # the plugins to use for this server block
|
|
||||||
# - name: kubernetes # name of plugin, if used multiple times ensure that the plugin supports it!
|
|
||||||
# parameters: foo bar # list of parameters after the plugin
|
|
||||||
# configBlock: |- # if the plugin supports extra block style config, supply it here
|
|
||||||
# hello world
|
|
||||||
# foo bar
|
|
||||||
|
|
||||||
# expects input structure as per specification https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/#affinity-v1-core
|
|
||||||
# for example:
|
|
||||||
# affinity:
|
|
||||||
# nodeAffinity:
|
|
||||||
# requiredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
# nodeSelectorTerms:
|
|
||||||
# - matchExpressions:
|
|
||||||
# - key: foo.bar.com/role
|
|
||||||
# operator: In
|
|
||||||
# values:
|
|
||||||
# - master
|
|
||||||
affinity: {}
|
|
||||||
|
|
||||||
# Node labels for pod assignment
|
|
||||||
# Ref: https://kubernetes.io/docs/user-guide/node-selection/
|
|
||||||
nodeSelector: {}
|
|
||||||
|
|
||||||
# expects input structure as per specification https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/#toleration-v1-core
|
|
||||||
# for example:
|
|
||||||
# tolerations:
|
|
||||||
# - key: foo.bar.com/role
|
|
||||||
# operator: Equal
|
|
||||||
# value: master
|
|
||||||
# effect: NoSchedule
|
|
||||||
tolerations: []
|
|
||||||
|
|
||||||
# https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget
|
|
||||||
podDisruptionBudget: {}
|
|
||||||
|
|
||||||
# configure custom zone files as per https://coredns.io/2017/05/08/custom-dns-entries-for-kubernetes/
|
|
||||||
zoneFiles: []
|
|
||||||
# - filename: example.db
|
|
||||||
# domain: example.com
|
|
||||||
# contents: |
|
|
||||||
# example.com. IN SOA sns.dns.icann.com. noc.dns.icann.com. 2015082541 7200 3600 1209600 3600
|
|
||||||
# example.com. IN NS b.iana-servers.net.
|
|
||||||
# example.com. IN NS a.iana-servers.net.
|
|
||||||
# example.com. IN A 192.168.99.102
|
|
||||||
# *.example.com. IN A 192.168.99.102
|
|
||||||
|
|
||||||
# optional array of secrets to mount inside coredns container
|
|
||||||
# possible usecase: need for secure connection with etcd backend
|
|
||||||
extraSecrets: []
|
|
||||||
# - name: etcd-client-certs
|
|
||||||
# mountPath: /etc/coredns/tls/etcd
|
|
||||||
# - name: some-fancy-secret
|
|
||||||
# mountPath: /etc/wherever
|
|
||||||
|
|
||||||
# Custom labels to apply to Deployment, Pod, Service, ServiceMonitor. Including autoscaler if enabled.
|
|
||||||
customLabels: {}
|
|
||||||
|
|
||||||
## Configue a cluster-proportional-autoscaler for coredns
|
|
||||||
# See https://github.com/kubernetes-incubator/cluster-proportional-autoscaler
|
|
||||||
autoscaler:
|
|
||||||
# Enabled the cluster-proportional-autoscaler
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
# Number of cores in the cluster per coredns replica
|
|
||||||
coresPerReplica: 256
|
|
||||||
# Number of nodes in the cluster per coredns replica
|
|
||||||
nodesPerReplica: 16
|
|
||||||
|
|
||||||
image:
|
|
||||||
repository: k8s.gcr.io/cluster-proportional-autoscaler-amd64
|
|
||||||
tag: "1.7.1"
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
# Optional priority class to be used for the autoscaler pods. priorityClassName used if not set.
|
|
||||||
priorityClassName: ""
|
|
||||||
|
|
||||||
# expects input structure as per specification https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/#affinity-v1-core
|
|
||||||
affinity: {}
|
|
||||||
|
|
||||||
# Node labels for pod assignment
|
|
||||||
# Ref: https://kubernetes.io/docs/user-guide/node-selection/
|
|
||||||
nodeSelector: {}
|
|
||||||
|
|
||||||
# expects input structure as per specification https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/#toleration-v1-core
|
|
||||||
tolerations: []
|
|
||||||
|
|
||||||
# resources for autoscaler pod
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: "20m"
|
|
||||||
memory: "10Mi"
|
|
||||||
limits:
|
|
||||||
cpu: "20m"
|
|
||||||
memory: "10Mi"
|
|
||||||
|
|
||||||
# Options for autoscaler configmap
|
|
||||||
configmap:
|
|
||||||
## Annotations for the coredns-autoscaler configmap
|
|
||||||
# i.e. strategy.spinnaker.io/versioned: "false" to ensure configmap isn't renamed
|
|
||||||
annotations: {}
|
|
||||||
k8sApp : "kube-dns"
|
|
||||||
|
|
||||||
global:
|
|
||||||
systemDefaultRegistry: ""
|
|
|
@ -1,22 +0,0 @@
|
||||||
# Patterns to ignore when building packages.
|
|
||||||
# This supports shell glob matching, relative path matching, and
|
|
||||||
# negation (prefixed with !). Only one pattern per line.
|
|
||||||
.DS_Store
|
|
||||||
# Common VCS dirs
|
|
||||||
.git/
|
|
||||||
.gitignore
|
|
||||||
.bzr/
|
|
||||||
.bzrignore
|
|
||||||
.hg/
|
|
||||||
.hgignore
|
|
||||||
.svn/
|
|
||||||
# Common backup files
|
|
||||||
*.swp
|
|
||||||
*.bak
|
|
||||||
*.tmp
|
|
||||||
*~
|
|
||||||
# Various IDEs
|
|
||||||
.project
|
|
||||||
.idea/
|
|
||||||
*.tmproj
|
|
||||||
.vscode/
|
|
|
@ -1,16 +0,0 @@
|
||||||
apiVersion: v1
|
|
||||||
appVersion: 0.35.0
|
|
||||||
description: Ingress controller for Kubernetes using NGINX as a reverse proxy and
|
|
||||||
load balancer
|
|
||||||
home: https://github.com/kubernetes/ingress-nginx
|
|
||||||
icon: https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Nginx_logo.svg/500px-Nginx_logo.svg.png
|
|
||||||
keywords:
|
|
||||||
- ingress
|
|
||||||
- nginx
|
|
||||||
kubeVersion: '>=1.16.0-0'
|
|
||||||
maintainers:
|
|
||||||
- name: ChiefAlexander
|
|
||||||
name: rke2-ingress-nginx
|
|
||||||
sources:
|
|
||||||
- https://github.com/kubernetes/ingress-nginx
|
|
||||||
version: 3.3.001
|
|
|
@ -1,5 +0,0 @@
|
||||||
approvers:
|
|
||||||
- ChiefAlexander
|
|
||||||
|
|
||||||
reviewers:
|
|
||||||
- ChiefAlexander
|
|
|
@ -1,221 +0,0 @@
|
||||||
# ingress-nginx
|
|
||||||
|
|
||||||
[ingress-nginx](https://github.com/kubernetes/ingress-nginx) Ingress controller for Kubernetes using NGINX as a reverse proxy and load balancer
|
|
||||||
|
|
||||||
To use, add the `kubernetes.io/ingress.class: nginx` annotation to your Ingress resources.
|
|
||||||
|
|
||||||
This chart bootstraps an ingress-nginx deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
- Kubernetes v1.16+
|
|
||||||
|
|
||||||
## Get Repo Info
|
|
||||||
|
|
||||||
```console
|
|
||||||
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
|
|
||||||
helm repo add stable https://kubernetes-charts.storage.googleapis.com/
|
|
||||||
helm repo update
|
|
||||||
```
|
|
||||||
|
|
||||||
## Install Chart
|
|
||||||
|
|
||||||
```console
|
|
||||||
# Helm 3
|
|
||||||
$ helm install [RELEASE_NAME] ingress-nginx/ingress-nginx
|
|
||||||
|
|
||||||
# Helm 2
|
|
||||||
$ helm install --name [RELEASE_NAME] ingress-nginx/ingress-nginx
|
|
||||||
```
|
|
||||||
|
|
||||||
The command deploys ingress-nginx on the Kubernetes cluster in the default configuration.
|
|
||||||
|
|
||||||
_See [configuration](#configuration) below._
|
|
||||||
|
|
||||||
_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._
|
|
||||||
|
|
||||||
## Uninstall Chart
|
|
||||||
|
|
||||||
```console
|
|
||||||
# Helm 3
|
|
||||||
$ helm uninstall [RELEASE_NAME]
|
|
||||||
|
|
||||||
# Helm 2
|
|
||||||
# helm delete --purge [RELEASE_NAME]
|
|
||||||
```
|
|
||||||
|
|
||||||
This removes all the Kubernetes components associated with the chart and deletes the release.
|
|
||||||
|
|
||||||
_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._
|
|
||||||
|
|
||||||
## Upgrading Chart
|
|
||||||
|
|
||||||
```console
|
|
||||||
# Helm 3 or 2
|
|
||||||
$ helm upgrade [RELEASE_NAME] [CHART] --install
|
|
||||||
```
|
|
||||||
|
|
||||||
_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._
|
|
||||||
|
|
||||||
### Upgrading With Zero Downtime in Production
|
|
||||||
|
|
||||||
By default the ingress-nginx controller has service interruptions whenever it's pods are restarted or redeployed. In order to fix that, see the excellent blog post by Lindsay Landry from Codecademy: [Kubernetes: Nginx and Zero Downtime in Production](https://medium.com/codecademy-engineering/kubernetes-nginx-and-zero-downtime-in-production-2c910c6a5ed8).
|
|
||||||
|
|
||||||
### Migrating from stable/nginx-ingress
|
|
||||||
|
|
||||||
There are two main ways to migrate a release from `stable/nginx-ingress` to `ingress-nginx/ingress-nginx` chart:
|
|
||||||
|
|
||||||
1. For Nginx Ingress controllers used for non-critical services, the easiest method is to [uninstall](#uninstall-chart) the old release and [install](#install-chart) the new one
|
|
||||||
1. For critical services in production that require zero-downtime, you will want to:
|
|
||||||
1. [Install](#install-chart) a second Ingress controller
|
|
||||||
1. Redirect your DNS traffic from the old controller to the new controller
|
|
||||||
1. Log traffic from both controllers during this changeover
|
|
||||||
1. [Uninstall](#uninstall-chart) the old controller once traffic has fully drained from it
|
|
||||||
1. For details on all of these steps see [Upgrading With Zero Downtime in Production](#upgrading-with-zero-downtime-in-production)
|
|
||||||
|
|
||||||
Note that there are some different and upgraded configurations between the two charts, described by Rimas Mocevicius from JFrog in the "Upgrading to ingress-nginx Helm chart" section of [Migrating from Helm chart nginx-ingress to ingress-nginx](https://rimusz.net/migrating-to-ingress-nginx). As the `ingress-nginx/ingress-nginx` chart continues to update, you will want to check current differences by running [helm configuration](#configuration) commands on both charts.
|
|
||||||
|
|
||||||
## Configuration
|
|
||||||
|
|
||||||
See [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments, visit the chart's [values.yaml](./values.yaml), or run these configuration commands:
|
|
||||||
|
|
||||||
```console
|
|
||||||
# Helm 2
|
|
||||||
$ helm inspect values ingress-nginx/ingress-nginx
|
|
||||||
|
|
||||||
# Helm 3
|
|
||||||
$ helm show values ingress-nginx/ingress-nginx
|
|
||||||
```
|
|
||||||
|
|
||||||
### PodDisruptionBudget
|
|
||||||
|
|
||||||
Note that the PodDisruptionBudget resource will only be defined if the replicaCount is greater than one,
|
|
||||||
else it would make it impossible to evacuate a node. See [gh issue #7127](https://github.com/helm/charts/issues/7127) for more info.
|
|
||||||
|
|
||||||
### Prometheus Metrics
|
|
||||||
|
|
||||||
The Nginx ingress controller can export Prometheus metrics, by setting `controller.metrics.enabled` to `true`.
|
|
||||||
|
|
||||||
You can add Prometheus annotations to the metrics service using `controller.metrics.service.annotations`. Alternatively, if you use the Prometheus Operator, you can enable ServiceMonitor creation using `controller.metrics.serviceMonitor.enabled`.
|
|
||||||
|
|
||||||
### ingress-nginx nginx\_status page/stats server
|
|
||||||
|
|
||||||
Previous versions of this chart had a `controller.stats.*` configuration block, which is now obsolete due to the following changes in nginx ingress controller:
|
|
||||||
|
|
||||||
- In [0.16.1](https://github.com/kubernetes/ingress-nginx/blob/master/Changelog.md#0161), the vts (virtual host traffic status) dashboard was removed
|
|
||||||
- In [0.23.0](https://github.com/kubernetes/ingress-nginx/blob/master/Changelog.md#0230), the status page at port 18080 is now a unix socket webserver only available at localhost.
|
|
||||||
You can use `curl --unix-socket /tmp/nginx-status-server.sock http://localhost/nginx_status` inside the controller container to access it locally, or use the snippet from [nginx-ingress changelog](https://github.com/kubernetes/ingress-nginx/blob/master/Changelog.md#0230) to re-enable the http server
|
|
||||||
|
|
||||||
### ExternalDNS Service Configuration
|
|
||||||
|
|
||||||
Add an [ExternalDNS](https://github.com/kubernetes-incubator/external-dns) annotation to the LoadBalancer service:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
controller:
|
|
||||||
service:
|
|
||||||
annotations:
|
|
||||||
external-dns.alpha.kubernetes.io/hostname: kubernetes-example.com.
|
|
||||||
```
|
|
||||||
|
|
||||||
### AWS L7 ELB with SSL Termination
|
|
||||||
|
|
||||||
Annotate the controller as shown in the [nginx-ingress l7 patch](https://github.com/kubernetes/ingress-nginx/blob/master/deploy/aws/l7/service-l7.yaml):
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
controller:
|
|
||||||
service:
|
|
||||||
targetPorts:
|
|
||||||
http: http
|
|
||||||
https: http
|
|
||||||
annotations:
|
|
||||||
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:XX-XXXX-X:XXXXXXXXX:certificate/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX
|
|
||||||
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: "http"
|
|
||||||
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https"
|
|
||||||
service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: '3600'
|
|
||||||
```
|
|
||||||
|
|
||||||
### AWS route53-mapper
|
|
||||||
|
|
||||||
To configure the LoadBalancer service with the [route53-mapper addon](https://github.com/kubernetes/kops/tree/master/addons/route53-mapper), add the `domainName` annotation and `dns` label:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
controller:
|
|
||||||
service:
|
|
||||||
labels:
|
|
||||||
dns: "route53"
|
|
||||||
annotations:
|
|
||||||
domainName: "kubernetes-example.com"
|
|
||||||
```
|
|
||||||
|
|
||||||
### Additional Internal Load Balancer
|
|
||||||
|
|
||||||
This setup is useful when you need both external and internal load balancers but don't want to have multiple ingress controllers and multiple ingress objects per application.
|
|
||||||
|
|
||||||
By default, the ingress object will point to the external load balancer address, but if correctly configured, you can make use of the internal one if the URL you are looking up resolves to the internal load balancer's URL.
|
|
||||||
|
|
||||||
You'll need to set both the following values:
|
|
||||||
|
|
||||||
`controller.service.internal.enabled`
|
|
||||||
`controller.service.internal.annotations`
|
|
||||||
|
|
||||||
If one of them is missing the internal load balancer will not be deployed. Example you may have `controller.service.internal.enabled=true` but no annotations set, in this case no action will be taken.
|
|
||||||
|
|
||||||
`controller.service.internal.annotations` varies with the cloud service you're using.
|
|
||||||
|
|
||||||
Example for AWS:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
controller:
|
|
||||||
service:
|
|
||||||
internal:
|
|
||||||
enabled: true
|
|
||||||
annotations:
|
|
||||||
# Create internal ELB
|
|
||||||
service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
|
|
||||||
# Any other annotation can be declared here.
|
|
||||||
```
|
|
||||||
|
|
||||||
Example for GCE:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
controller:
|
|
||||||
service:
|
|
||||||
internal:
|
|
||||||
enabled: true
|
|
||||||
annotations:
|
|
||||||
# Create internal LB
|
|
||||||
cloud.google.com/load-balancer-type: "Internal"
|
|
||||||
# Any other annotation can be declared here.
|
|
||||||
```
|
|
||||||
|
|
||||||
Example for Azure:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
controller:
|
|
||||||
service:
|
|
||||||
annotations:
|
|
||||||
# Create internal LB
|
|
||||||
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
|
|
||||||
# Any other annotation can be declared here.
|
|
||||||
```
|
|
||||||
|
|
||||||
An use case for this scenario is having a split-view DNS setup where the public zone CNAME records point to the external balancer URL while the private zone CNAME records point to the internal balancer URL. This way, you only need one ingress kubernetes object.
|
|
||||||
|
|
||||||
### Ingress Admission Webhooks
|
|
||||||
|
|
||||||
With nginx-ingress-controller version 0.25+, the nginx ingress controller pod exposes an endpoint that will integrate with the `validatingwebhookconfiguration` Kubernetes feature to prevent bad ingress from being added to the cluster.
|
|
||||||
**This feature is enabled by default since 0.31.0.**
|
|
||||||
|
|
||||||
With nginx-ingress-controller in 0.25.* work only with kubernetes 1.14+, 0.26 fix [this issue](https://github.com/kubernetes/ingress-nginx/pull/4521)
|
|
||||||
|
|
||||||
### Helm Error When Upgrading: spec.clusterIP: Invalid value: ""
|
|
||||||
|
|
||||||
If you are upgrading this chart from a version between 0.31.0 and 1.2.2 then you may get an error like this:
|
|
||||||
|
|
||||||
```console
|
|
||||||
Error: UPGRADE FAILED: Service "?????-controller" is invalid: spec.clusterIP: Invalid value: "": field is immutable
|
|
||||||
```
|
|
||||||
|
|
||||||
Detail of how and why are in [this issue](https://github.com/helm/charts/pull/13646) but to resolve this you can set `xxxx.service.omitClusterIP` to `true` where `xxxx` is the service referenced in the error.
|
|
||||||
|
|
||||||
As of version `1.26.0` of this chart, by simply not providing any clusterIP value, `invalid: spec.clusterIP: Invalid value: "": field is immutable` will no longer occur since `clusterIP: ""` will not be rendered.
|
|
|
@ -1,9 +0,0 @@
|
||||||
controller:
|
|
||||||
kind: DaemonSet
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
||||||
|
|
||||||
config:
|
|
||||||
use-proxy-protocol: "true"
|
|
|
@ -1,18 +0,0 @@
|
||||||
controller:
|
|
||||||
kind: DaemonSet
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
service:
|
|
||||||
type: NodePort
|
|
||||||
nodePorts:
|
|
||||||
tcp:
|
|
||||||
9000: 30090
|
|
||||||
udp:
|
|
||||||
9001: 30091
|
|
||||||
|
|
||||||
tcp:
|
|
||||||
9000: "default/test:8080"
|
|
||||||
|
|
||||||
udp:
|
|
||||||
9001: "default/test:8080"
|
|
|
@ -1,10 +0,0 @@
|
||||||
controller:
|
|
||||||
kind: DaemonSet
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
addHeaders:
|
|
||||||
X-Frame-Options: deny
|
|
||||||
proxySetHeaders:
|
|
||||||
X-Forwarded-Proto: https
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
|
@ -1,10 +0,0 @@
|
||||||
controller:
|
|
||||||
kind: DaemonSet
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
||||||
internal:
|
|
||||||
enabled: true
|
|
||||||
annotations:
|
|
||||||
service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
|
|
|
@ -1,6 +0,0 @@
|
||||||
controller:
|
|
||||||
kind: DaemonSet
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
service:
|
|
||||||
type: NodePort
|
|
|
@ -1,16 +0,0 @@
|
||||||
controller:
|
|
||||||
kind: DaemonSet
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
||||||
tcp:
|
|
||||||
configMapNamespace: default
|
|
||||||
udp:
|
|
||||||
configMapNamespace: default
|
|
||||||
|
|
||||||
tcp:
|
|
||||||
9000: "default/test:8080"
|
|
||||||
|
|
||||||
udp:
|
|
||||||
9001: "default/test:8080"
|
|
|
@ -1,12 +0,0 @@
|
||||||
controller:
|
|
||||||
kind: DaemonSet
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
||||||
|
|
||||||
tcp:
|
|
||||||
9000: "default/test:8080"
|
|
||||||
|
|
||||||
udp:
|
|
||||||
9001: "default/test:8080"
|
|
|
@ -1,10 +0,0 @@
|
||||||
controller:
|
|
||||||
kind: DaemonSet
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
||||||
|
|
||||||
tcp:
|
|
||||||
9000: "default/test:8080"
|
|
||||||
9001: "default/test:8080"
|
|
|
@ -1,6 +0,0 @@
|
||||||
controller:
|
|
||||||
kind: DaemonSet
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
|
@ -1,8 +0,0 @@
|
||||||
controller:
|
|
||||||
kind: DaemonSet
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
metrics:
|
|
||||||
enabled: true
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
|
@ -1,9 +0,0 @@
|
||||||
controller:
|
|
||||||
kind: DaemonSet
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
||||||
|
|
||||||
podSecurityPolicy:
|
|
||||||
enabled: true
|
|
|
@ -1,9 +0,0 @@
|
||||||
controller:
|
|
||||||
kind: DaemonSet
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: true
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
||||||
|
|
||||||
podSecurityPolicy:
|
|
||||||
enabled: true
|
|
|
@ -1,6 +0,0 @@
|
||||||
controller:
|
|
||||||
kind: DaemonSet
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: true
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
|
@ -1,7 +0,0 @@
|
||||||
controller:
|
|
||||||
autoscaling:
|
|
||||||
enabled: true
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
|
@ -1,7 +0,0 @@
|
||||||
controller:
|
|
||||||
config:
|
|
||||||
use-proxy-protocol: "true"
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
|
@ -1,16 +0,0 @@
|
||||||
controller:
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
service:
|
|
||||||
type: NodePort
|
|
||||||
nodePorts:
|
|
||||||
tcp:
|
|
||||||
9000: 30090
|
|
||||||
udp:
|
|
||||||
9001: 30091
|
|
||||||
|
|
||||||
tcp:
|
|
||||||
9000: "default/test:8080"
|
|
||||||
|
|
||||||
udp:
|
|
||||||
9001: "default/test:8080"
|
|
|
@ -1,4 +0,0 @@
|
||||||
# Left blank to test default values
|
|
||||||
controller:
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
|
@ -1,9 +0,0 @@
|
||||||
controller:
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
addHeaders:
|
|
||||||
X-Frame-Options: deny
|
|
||||||
proxySetHeaders:
|
|
||||||
X-Forwarded-Proto: https
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
|
@ -1,9 +0,0 @@
|
||||||
controller:
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
||||||
internal:
|
|
||||||
enabled: true
|
|
||||||
annotations:
|
|
||||||
service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
|
|
|
@ -1,7 +0,0 @@
|
||||||
controller:
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
metrics:
|
|
||||||
enabled: true
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
|
@ -1,5 +0,0 @@
|
||||||
controller:
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
service:
|
|
||||||
type: NodePort
|
|
|
@ -1,6 +0,0 @@
|
||||||
controller:
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
||||||
|
|
||||||
podSecurityPolicy:
|
|
||||||
enabled: true
|
|
|
@ -1,15 +0,0 @@
|
||||||
controller:
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
||||||
tcp:
|
|
||||||
configMapNamespace: default
|
|
||||||
udp:
|
|
||||||
configMapNamespace: default
|
|
||||||
|
|
||||||
tcp:
|
|
||||||
9000: "default/test:8080"
|
|
||||||
|
|
||||||
udp:
|
|
||||||
9001: "default/test:8080"
|
|
|
@ -1,11 +0,0 @@
|
||||||
controller:
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: false
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
||||||
|
|
||||||
tcp:
|
|
||||||
9000: "default/test:8080"
|
|
||||||
|
|
||||||
udp:
|
|
||||||
9001: "default/test:8080"
|
|
|
@ -1,7 +0,0 @@
|
||||||
controller:
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
||||||
|
|
||||||
tcp:
|
|
||||||
9000: "default/test:8080"
|
|
||||||
9001: "default/test:8080"
|
|
|
@ -1,8 +0,0 @@
|
||||||
controller:
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: true
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
||||||
|
|
||||||
podSecurityPolicy:
|
|
||||||
enabled: true
|
|
|
@ -1,5 +0,0 @@
|
||||||
controller:
|
|
||||||
admissionWebhooks:
|
|
||||||
enabled: true
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
|
@ -1,71 +0,0 @@
|
||||||
The ingress-nginx controller has been installed.
|
|
||||||
|
|
||||||
{{- if contains "NodePort" .Values.controller.service.type }}
|
|
||||||
Get the application URL by running these commands:
|
|
||||||
|
|
||||||
{{- if (not (empty .Values.controller.service.nodePorts.http)) }}
|
|
||||||
export HTTP_NODE_PORT={{ .Values.controller.service.nodePorts.http }}
|
|
||||||
{{- else }}
|
|
||||||
export HTTP_NODE_PORT=$(kubectl --namespace {{ .Release.Namespace }} get services -o jsonpath="{.spec.ports[0].nodePort}" {{ include "ingress-nginx.controller.fullname" . }})
|
|
||||||
{{- end }}
|
|
||||||
{{- if (not (empty .Values.controller.service.nodePorts.https)) }}
|
|
||||||
export HTTPS_NODE_PORT={{ .Values.controller.service.nodePorts.https }}
|
|
||||||
{{- else }}
|
|
||||||
export HTTPS_NODE_PORT=$(kubectl --namespace {{ .Release.Namespace }} get services -o jsonpath="{.spec.ports[1].nodePort}" {{ include "ingress-nginx.controller.fullname" . }})
|
|
||||||
{{- end }}
|
|
||||||
export NODE_IP=$(kubectl --namespace {{ .Release.Namespace }} get nodes -o jsonpath="{.items[0].status.addresses[1].address}")
|
|
||||||
|
|
||||||
echo "Visit http://$NODE_IP:$HTTP_NODE_PORT to access your application via HTTP."
|
|
||||||
echo "Visit https://$NODE_IP:$HTTPS_NODE_PORT to access your application via HTTPS."
|
|
||||||
{{- else if contains "LoadBalancer" .Values.controller.service.type }}
|
|
||||||
It may take a few minutes for the LoadBalancer IP to be available.
|
|
||||||
You can watch the status by running 'kubectl --namespace {{ .Release.Namespace }} get services -o wide -w {{ include "ingress-nginx.controller.fullname" . }}'
|
|
||||||
{{- else if contains "ClusterIP" .Values.controller.service.type }}
|
|
||||||
Get the application URL by running these commands:
|
|
||||||
export POD_NAME=$(kubectl --namespace {{ .Release.Namespace }} get pods -o jsonpath="{.items[0].metadata.name}" -l "app={{ template "ingress-nginx.name" . }},component={{ .Values.controller.name }},release={{ .Release.Name }}")
|
|
||||||
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
|
|
||||||
echo "Visit http://127.0.0.1:8080 to access your application."
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
An example Ingress that makes use of the controller:
|
|
||||||
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
annotations:
|
|
||||||
kubernetes.io/ingress.class: {{ .Values.controller.ingressClass }}
|
|
||||||
name: example
|
|
||||||
namespace: foo
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: www.example.com
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- backend:
|
|
||||||
serviceName: exampleService
|
|
||||||
servicePort: 80
|
|
||||||
path: /
|
|
||||||
# This section is only required if TLS is to be enabled for the Ingress
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- www.example.com
|
|
||||||
secretName: example-tls
|
|
||||||
|
|
||||||
If TLS is enabled for the Ingress, a Secret containing the certificate and key must also be provided:
|
|
||||||
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: example-tls
|
|
||||||
namespace: foo
|
|
||||||
data:
|
|
||||||
tls.crt: <base64 encoded cert>
|
|
||||||
tls.key: <base64 encoded key>
|
|
||||||
type: kubernetes.io/tls
|
|
||||||
|
|
||||||
{{- if .Values.controller.headers }}
|
|
||||||
#################################################################################
|
|
||||||
###### WARNING: `controller.headers` has been deprecated! #####
|
|
||||||
###### It has been renamed to `controller.proxySetHeaders`. #####
|
|
||||||
#################################################################################
|
|
||||||
{{- end }}
|
|
|
@ -1,132 +0,0 @@
|
||||||
{{/* vim: set filetype=mustache: */}}
|
|
||||||
{{/*
|
|
||||||
Expand the name of the chart.
|
|
||||||
*/}}
|
|
||||||
{{- define "ingress-nginx.name" -}}
|
|
||||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create chart name and version as used by the chart label.
|
|
||||||
*/}}
|
|
||||||
{{- define "ingress-nginx.chart" -}}
|
|
||||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create a default fully qualified app name.
|
|
||||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
|
||||||
*/}}
|
|
||||||
{{- define "ingress-nginx.fullname" -}}
|
|
||||||
{{- if .Values.fullnameOverride -}}
|
|
||||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
|
||||||
{{- if contains $name .Release.Name -}}
|
|
||||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create a default fully qualified controller name.
|
|
||||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
|
||||||
*/}}
|
|
||||||
{{- define "ingress-nginx.controller.fullname" -}}
|
|
||||||
{{- printf "%s-%s" (include "ingress-nginx.fullname" .) "controller" | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Construct the path for the publish-service.
|
|
||||||
|
|
||||||
By convention this will simply use the <namespace>/<controller-name> to match the name of the
|
|
||||||
service generated.
|
|
||||||
|
|
||||||
Users can provide an override for an explicit service they want bound via `.Values.controller.publishService.pathOverride`
|
|
||||||
|
|
||||||
*/}}
|
|
||||||
{{- define "ingress-nginx.controller.publishServicePath" -}}
|
|
||||||
{{- $defServiceName := printf "%s/%s" "$(POD_NAMESPACE)" (include "ingress-nginx.controller.fullname" .) -}}
|
|
||||||
{{- $servicePath := default $defServiceName .Values.controller.publishService.pathOverride }}
|
|
||||||
{{- print $servicePath | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create a default fully qualified default backend name.
|
|
||||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
|
||||||
*/}}
|
|
||||||
{{- define "ingress-nginx.defaultBackend.fullname" -}}
|
|
||||||
{{- printf "%s-%s" (include "ingress-nginx.fullname" .) "defaultbackend" | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Common labels
|
|
||||||
*/}}
|
|
||||||
{{- define "ingress-nginx.labels" -}}
|
|
||||||
helm.sh/chart: {{ include "ingress-nginx.chart" . }}
|
|
||||||
{{ include "ingress-nginx.selectorLabels" . }}
|
|
||||||
{{- if .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Selector labels
|
|
||||||
*/}}
|
|
||||||
{{- define "ingress-nginx.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/name: {{ include "ingress-nginx.name" . }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create the name of the controller service account to use
|
|
||||||
*/}}
|
|
||||||
{{- define "ingress-nginx.serviceAccountName" -}}
|
|
||||||
{{- if .Values.serviceAccount.create -}}
|
|
||||||
{{ default (include "ingress-nginx.fullname" .) .Values.serviceAccount.name }}
|
|
||||||
{{- else -}}
|
|
||||||
{{ default "default" .Values.serviceAccount.name }}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create the name of the backend service account to use - only used when podsecuritypolicy is also enabled
|
|
||||||
*/}}
|
|
||||||
{{- define "ingress-nginx.defaultBackend.serviceAccountName" -}}
|
|
||||||
{{- if .Values.defaultBackend.serviceAccount.create -}}
|
|
||||||
{{ default (printf "%s-backend" (include "ingress-nginx.fullname" .)) .Values.defaultBackend.serviceAccount.name }}
|
|
||||||
{{- else -}}
|
|
||||||
{{ default "default-backend" .Values.defaultBackend.serviceAccount.name }}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Return the appropriate apiGroup for PodSecurityPolicy.
|
|
||||||
*/}}
|
|
||||||
{{- define "podSecurityPolicy.apiGroup" -}}
|
|
||||||
{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
|
||||||
{{- print "policy" -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- print "extensions" -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Check the ingress controller version tag is at most three versions behind the last release
|
|
||||||
*/}}
|
|
||||||
{{- define "isControllerTagValid" -}}
|
|
||||||
{{- if not (semverCompare ">=0.27.0-0" (trimPrefix "nginx-" .Values.controller.image.tag)) -}}
|
|
||||||
{{- fail "Controller container image tag should be 0.27.0 or higher" -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- define "system_default_registry" -}}
|
|
||||||
{{- if .Values.global.systemDefaultRegistry -}}
|
|
||||||
{{- printf "%s/" .Values.global.systemDefaultRegistry -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- "" -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
|
@ -1,27 +0,0 @@
|
||||||
{{- if and .Values.controller.admissionWebhooks.enabled .Values.controller.admissionWebhooks.patch.enabled -}}
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRole
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade
|
|
||||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: admission-webhook
|
|
||||||
rules:
|
|
||||||
- apiGroups:
|
|
||||||
- admissionregistration.k8s.io
|
|
||||||
resources:
|
|
||||||
- validatingwebhookconfigurations
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- update
|
|
||||||
{{- if .Values.podSecurityPolicy.enabled }}
|
|
||||||
- apiGroups: ['extensions']
|
|
||||||
resources: ['podsecuritypolicies']
|
|
||||||
verbs: ['use']
|
|
||||||
resourceNames:
|
|
||||||
- {{ include "ingress-nginx.fullname" . }}-admission
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
|
@ -1,20 +0,0 @@
|
||||||
{{- if and .Values.controller.admissionWebhooks.enabled .Values.controller.admissionWebhooks.patch.enabled -}}
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRoleBinding
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade
|
|
||||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: admission-webhook
|
|
||||||
roleRef:
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
kind: ClusterRole
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
{{- end }}
|
|
|
@ -1,60 +0,0 @@
|
||||||
{{- if and .Values.controller.admissionWebhooks.enabled .Values.controller.admissionWebhooks.patch.enabled -}}
|
|
||||||
apiVersion: batch/v1
|
|
||||||
kind: Job
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission-create
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": pre-install,pre-upgrade
|
|
||||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: admission-webhook
|
|
||||||
spec:
|
|
||||||
{{- if .Capabilities.APIVersions.Has "batch/v1alpha1" }}
|
|
||||||
# Alpha feature since k8s 1.12
|
|
||||||
ttlSecondsAfterFinished: 0
|
|
||||||
{{- end }}
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission-create
|
|
||||||
{{- if .Values.controller.admissionWebhooks.patch.podAnnotations }}
|
|
||||||
annotations: {{ toYaml .Values.controller.admissionWebhooks.patch.podAnnotations | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 8 }}
|
|
||||||
app.kubernetes.io/component: admission-webhook
|
|
||||||
spec:
|
|
||||||
{{- if .Values.controller.admissionWebhooks.patch.priorityClassName }}
|
|
||||||
priorityClassName: {{ .Values.controller.admissionWebhooks.patch.priorityClassName }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.imagePullSecrets }}
|
|
||||||
imagePullSecrets: {{ toYaml .Values.imagePullSecrets | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
containers:
|
|
||||||
- name: create
|
|
||||||
{{- with .Values.controller.admissionWebhooks.patch.image }}
|
|
||||||
image: "{{ template "system_default_registry" . }}{{.repository}}:{{ .tag }}{{- if (.digest) -}} @{{.digest}} {{- end -}}"
|
|
||||||
{{- end }}
|
|
||||||
imagePullPolicy: {{ .Values.controller.admissionWebhooks.patch.image.pullPolicy }}
|
|
||||||
args:
|
|
||||||
- create
|
|
||||||
- --host={{ include "ingress-nginx.controller.fullname" . }}-admission,{{ include "ingress-nginx.controller.fullname" . }}-admission.$(POD_NAMESPACE).svc
|
|
||||||
- --namespace=$(POD_NAMESPACE)
|
|
||||||
- --secret-name={{ include "ingress-nginx.fullname" . }}-admission
|
|
||||||
env:
|
|
||||||
- name: POD_NAMESPACE
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: metadata.namespace
|
|
||||||
restartPolicy: OnFailure
|
|
||||||
serviceAccountName: {{ include "ingress-nginx.fullname" . }}-admission
|
|
||||||
{{- if .Values.controller.admissionWebhooks.patch.nodeSelector }}
|
|
||||||
nodeSelector: {{ toYaml .Values.controller.admissionWebhooks.patch.nodeSelector | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.admissionWebhooks.patch.tolerations }}
|
|
||||||
tolerations: {{ toYaml .Values.controller.admissionWebhooks.patch.tolerations | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
securityContext:
|
|
||||||
runAsNonRoot: true
|
|
||||||
runAsUser: {{ .Values.controller.admissionWebhooks.patch.runAsUser }}
|
|
||||||
{{- end }}
|
|
|
@ -1,62 +0,0 @@
|
||||||
{{- if and .Values.controller.admissionWebhooks.enabled .Values.controller.admissionWebhooks.patch.enabled -}}
|
|
||||||
apiVersion: batch/v1
|
|
||||||
kind: Job
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission-patch
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": post-install,post-upgrade
|
|
||||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: admission-webhook
|
|
||||||
spec:
|
|
||||||
{{- if .Capabilities.APIVersions.Has "batch/v1alpha1" }}
|
|
||||||
# Alpha feature since k8s 1.12
|
|
||||||
ttlSecondsAfterFinished: 0
|
|
||||||
{{- end }}
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission-patch
|
|
||||||
{{- if .Values.controller.admissionWebhooks.patch.podAnnotations }}
|
|
||||||
annotations: {{ toYaml .Values.controller.admissionWebhooks.patch.podAnnotations | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 8 }}
|
|
||||||
app.kubernetes.io/component: admission-webhook
|
|
||||||
spec:
|
|
||||||
{{- if .Values.controller.admissionWebhooks.patch.priorityClassName }}
|
|
||||||
priorityClassName: {{ .Values.controller.admissionWebhooks.patch.priorityClassName }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.imagePullSecrets }}
|
|
||||||
imagePullSecrets: {{ toYaml .Values.imagePullSecrets | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
containers:
|
|
||||||
- name: patch
|
|
||||||
{{- with .Values.controller.admissionWebhooks.patch.image }}
|
|
||||||
image: "{{ template "system_default_registry" . }}{{.repository}}:{{ .tag }}{{- if (.digest) -}} @{{.digest}} {{- end -}}"
|
|
||||||
{{- end }}
|
|
||||||
imagePullPolicy: {{ .Values.controller.admissionWebhooks.patch.image.pullPolicy }}
|
|
||||||
args:
|
|
||||||
- patch
|
|
||||||
- --webhook-name={{ include "ingress-nginx.fullname" . }}-admission
|
|
||||||
- --namespace=$(POD_NAMESPACE)
|
|
||||||
- --patch-mutating=false
|
|
||||||
- --secret-name={{ include "ingress-nginx.fullname" . }}-admission
|
|
||||||
- --patch-failure-policy={{ .Values.controller.admissionWebhooks.failurePolicy }}
|
|
||||||
env:
|
|
||||||
- name: POD_NAMESPACE
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: metadata.namespace
|
|
||||||
restartPolicy: OnFailure
|
|
||||||
serviceAccountName: {{ include "ingress-nginx.fullname" . }}-admission
|
|
||||||
{{- if .Values.controller.admissionWebhooks.patch.nodeSelector }}
|
|
||||||
nodeSelector: {{ toYaml .Values.controller.admissionWebhooks.patch.nodeSelector | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.admissionWebhooks.patch.tolerations }}
|
|
||||||
tolerations: {{ toYaml .Values.controller.admissionWebhooks.patch.tolerations | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
securityContext:
|
|
||||||
runAsNonRoot: true
|
|
||||||
runAsUser: {{ .Values.controller.admissionWebhooks.patch.runAsUser }}
|
|
||||||
{{- end }}
|
|
|
@ -1,36 +0,0 @@
|
||||||
{{- if and .Values.controller.admissionWebhooks.enabled .Values.controller.admissionWebhooks.patch.enabled .Values.podSecurityPolicy.enabled -}}
|
|
||||||
apiVersion: policy/v1beta1
|
|
||||||
kind: PodSecurityPolicy
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade
|
|
||||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: admission-webhook
|
|
||||||
spec:
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
fsGroup:
|
|
||||||
ranges:
|
|
||||||
- max: 65535
|
|
||||||
min: 1
|
|
||||||
rule: MustRunAs
|
|
||||||
requiredDropCapabilities:
|
|
||||||
- ALL
|
|
||||||
runAsUser:
|
|
||||||
rule: MustRunAsNonRoot
|
|
||||||
seLinux:
|
|
||||||
rule: RunAsAny
|
|
||||||
supplementalGroups:
|
|
||||||
ranges:
|
|
||||||
- max: 65535
|
|
||||||
min: 1
|
|
||||||
rule: MustRunAs
|
|
||||||
volumes:
|
|
||||||
- configMap
|
|
||||||
- emptyDir
|
|
||||||
- projected
|
|
||||||
- secret
|
|
||||||
- downwardAPI
|
|
||||||
{{- end }}
|
|
|
@ -1,20 +0,0 @@
|
||||||
{{- if and .Values.controller.admissionWebhooks.enabled .Values.controller.admissionWebhooks.patch.enabled -}}
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: Role
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade
|
|
||||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: admission-webhook
|
|
||||||
rules:
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- secrets
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- create
|
|
||||||
{{- end }}
|
|
|
@ -1,20 +0,0 @@
|
||||||
{{- if and .Values.controller.admissionWebhooks.enabled .Values.controller.admissionWebhooks.patch.enabled -}}
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: RoleBinding
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade
|
|
||||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: admission-webhook
|
|
||||||
roleRef:
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
kind: Role
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
{{- end }}
|
|
|
@ -1,12 +0,0 @@
|
||||||
{{- if and .Values.controller.admissionWebhooks.enabled .Values.controller.admissionWebhooks.patch.enabled -}}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade
|
|
||||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: admission-webhook
|
|
||||||
{{- end }}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{{- if .Values.controller.admissionWebhooks.enabled -}}
|
|
||||||
# before changing this value, check the required kubernetes version
|
|
||||||
# https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#prerequisites
|
|
||||||
apiVersion: admissionregistration.k8s.io/v1
|
|
||||||
kind: ValidatingWebhookConfiguration
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: admission-webhook
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission
|
|
||||||
webhooks:
|
|
||||||
- name: validate.nginx.ingress.kubernetes.io
|
|
||||||
rules:
|
|
||||||
- apiGroups:
|
|
||||||
- networking.k8s.io
|
|
||||||
apiVersions:
|
|
||||||
- v1beta1
|
|
||||||
- v1
|
|
||||||
operations:
|
|
||||||
- CREATE
|
|
||||||
- UPDATE
|
|
||||||
resources:
|
|
||||||
- ingresses
|
|
||||||
failurePolicy: Fail
|
|
||||||
sideEffects: None
|
|
||||||
admissionReviewVersions:
|
|
||||||
- v1beta1
|
|
||||||
clientConfig:
|
|
||||||
service:
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}-admission
|
|
||||||
path: /networking/v1beta1/ingresses
|
|
||||||
{{- end }}
|
|
|
@ -1,76 +0,0 @@
|
||||||
{{- if and .Values.rbac.create (not .Values.rbac.scope) -}}
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRole
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}
|
|
||||||
rules:
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- configmaps
|
|
||||||
- endpoints
|
|
||||||
- nodes
|
|
||||||
- pods
|
|
||||||
- secrets
|
|
||||||
verbs:
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
{{- if and .Values.controller.scope.enabled .Values.controller.scope.namespace }}
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- namespaces
|
|
||||||
resourceNames:
|
|
||||||
- "{{ .Values.controller.scope.namespace }}"
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
{{- end }}
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- nodes
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- services
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- update
|
|
||||||
- watch
|
|
||||||
- apiGroups:
|
|
||||||
- extensions
|
|
||||||
- "networking.k8s.io" # k8s 1.14+
|
|
||||||
resources:
|
|
||||||
- ingresses
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- events
|
|
||||||
verbs:
|
|
||||||
- create
|
|
||||||
- patch
|
|
||||||
- apiGroups:
|
|
||||||
- extensions
|
|
||||||
- "networking.k8s.io" # k8s 1.14+
|
|
||||||
resources:
|
|
||||||
- ingresses/status
|
|
||||||
verbs:
|
|
||||||
- update
|
|
||||||
- apiGroups:
|
|
||||||
- "networking.k8s.io" # k8s 1.14+
|
|
||||||
resources:
|
|
||||||
- ingressclasses
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
{{- end }}
|
|
|
@ -1,16 +0,0 @@
|
||||||
{{- if and .Values.rbac.create (not .Values.rbac.scope) -}}
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRoleBinding
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}
|
|
||||||
roleRef:
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
kind: ClusterRole
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: {{ template "ingress-nginx.serviceAccountName" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
{{- end }}
|
|
|
@ -1,10 +0,0 @@
|
||||||
{{- if .Values.controller.addHeaders -}}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-custom-add-headers
|
|
||||||
data: {{ toYaml .Values.controller.addHeaders | nindent 2 }}
|
|
||||||
{{- end }}
|
|
|
@ -1,15 +0,0 @@
|
||||||
{{- if or .Values.controller.proxySetHeaders .Values.controller.headers -}}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-custom-proxy-headers
|
|
||||||
data:
|
|
||||||
{{- if .Values.controller.proxySetHeaders }}
|
|
||||||
{{ toYaml .Values.controller.proxySetHeaders | indent 2 }}
|
|
||||||
{{ else if and .Values.controller.headers (not .Values.controller.proxySetHeaders) }}
|
|
||||||
{{ toYaml .Values.controller.headers | indent 2 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
|
@ -1,13 +0,0 @@
|
||||||
{{- if .Values.tcp -}}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
{{- if .Values.controller.tcp.annotations }}
|
|
||||||
annotations: {{ toYaml .Values.controller.tcp.annotations | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-tcp
|
|
||||||
data: {{ tpl (toYaml .Values.tcp) . | nindent 2 }}
|
|
||||||
{{- end }}
|
|
|
@ -1,13 +0,0 @@
|
||||||
{{- if .Values.udp -}}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
{{- if .Values.controller.udp.annotations }}
|
|
||||||
annotations: {{ toYaml .Values.controller.udp.annotations | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-udp
|
|
||||||
data: {{ tpl (toYaml .Values.udp) . | nindent 2 }}
|
|
||||||
{{- end }}
|
|
|
@ -1,20 +0,0 @@
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
{{- if .Values.controller.configAnnotations }}
|
|
||||||
annotations: {{ toYaml .Values.controller.configAnnotations | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}
|
|
||||||
data:
|
|
||||||
{{- if .Values.controller.addHeaders }}
|
|
||||||
add-headers: {{ .Release.Namespace }}/{{ include "ingress-nginx.fullname" . }}-custom-add-headers
|
|
||||||
{{- end }}
|
|
||||||
{{- if or .Values.controller.proxySetHeaders .Values.controller.headers }}
|
|
||||||
proxy-set-headers: {{ .Release.Namespace }}/{{ include "ingress-nginx.fullname" . }}-custom-proxy-headers
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.config }}
|
|
||||||
{{ toYaml .Values.controller.config | nindent 2 }}
|
|
||||||
{{- end }}
|
|
|
@ -1,252 +0,0 @@
|
||||||
{{- if or (eq .Values.controller.kind "DaemonSet") (eq .Values.controller.kind "Both") -}}
|
|
||||||
{{- include "isControllerTagValid" . -}}
|
|
||||||
apiVersion: apps/v1
|
|
||||||
kind: DaemonSet
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
{{- with .Values.controller.labels }}
|
|
||||||
{{- toYaml . | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}
|
|
||||||
{{- if .Values.controller.annotations }}
|
|
||||||
annotations: {{ toYaml .Values.controller.annotations | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
{{- include "ingress-nginx.selectorLabels" . | nindent 6 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
|
|
||||||
{{- if .Values.controller.updateStrategy }}
|
|
||||||
updateStrategy: {{ toYaml .Values.controller.updateStrategy | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
minReadySeconds: {{ .Values.controller.minReadySeconds }}
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
{{- if .Values.controller.podAnnotations }}
|
|
||||||
annotations: {{ toYaml .Values.controller.podAnnotations | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.selectorLabels" . | nindent 8 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
{{- if .Values.controller.podLabels }}
|
|
||||||
{{- toYaml .Values.controller.podLabels | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
spec:
|
|
||||||
{{- if .Values.controller.dnsConfig }}
|
|
||||||
dnsConfig: {{ toYaml .Values.controller.dnsConfig | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
dnsPolicy: {{ .Values.controller.dnsPolicy }}
|
|
||||||
{{- if .Values.imagePullSecrets }}
|
|
||||||
imagePullSecrets: {{ toYaml .Values.imagePullSecrets | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.priorityClassName }}
|
|
||||||
priorityClassName: {{ .Values.controller.priorityClassName }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if or .Values.controller.podSecurityContext .Values.controller.sysctls }}
|
|
||||||
securityContext:
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.podSecurityContext }}
|
|
||||||
{{- toYaml .Values.controller.podSecurityContext | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.sysctls }}
|
|
||||||
sysctls:
|
|
||||||
{{- range $sysctl, $value := .Values.controller.sysctls }}
|
|
||||||
- name: {{ $sysctl | quote }}
|
|
||||||
value: {{ $value | quote }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
containers:
|
|
||||||
- name: controller
|
|
||||||
{{- with .Values.controller.image }}
|
|
||||||
image: "{{ template "system_default_registry" . }}{{.repository}}:{{ .tag }}{{- if (.digest) -}} @{{.digest}} {{- end -}}"
|
|
||||||
{{- end }}
|
|
||||||
imagePullPolicy: {{ .Values.controller.image.pullPolicy }}
|
|
||||||
{{- if .Values.controller.lifecycle }}
|
|
||||||
lifecycle: {{ toYaml .Values.controller.lifecycle | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
args:
|
|
||||||
- /nginx-ingress-controller
|
|
||||||
{{- if .Values.defaultBackend.enabled }}
|
|
||||||
- --default-backend-service={{ .Release.Namespace }}/{{ include "ingress-nginx.defaultBackend.fullname" . }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.publishService.enabled }}
|
|
||||||
- --publish-service={{ template "ingress-nginx.controller.publishServicePath" . }}
|
|
||||||
{{- end }}
|
|
||||||
- --election-id={{ .Values.controller.electionID }}
|
|
||||||
- --ingress-class={{ .Values.controller.ingressClass }}
|
|
||||||
- --configmap={{ .Release.Namespace }}/{{ include "ingress-nginx.controller.fullname" . }}
|
|
||||||
{{- if .Values.tcp }}
|
|
||||||
- --tcp-services-configmap={{ .Release.Namespace }}/{{ include "ingress-nginx.fullname" . }}-tcp
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.udp }}
|
|
||||||
- --udp-services-configmap={{ .Release.Namespace }}/{{ include "ingress-nginx.fullname" . }}-udp
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.scope.enabled }}
|
|
||||||
- --watch-namespace={{ default .Release.Namespace .Values.controller.scope.namespace }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if and .Values.controller.reportNodeInternalIp .Values.controller.hostNetwork }}
|
|
||||||
- --report-node-internal-ip-address={{ .Values.controller.reportNodeInternalIp }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.admissionWebhooks.enabled }}
|
|
||||||
- --validating-webhook=:{{ .Values.controller.admissionWebhooks.port }}
|
|
||||||
- --validating-webhook-certificate=/usr/local/certificates/cert
|
|
||||||
- --validating-webhook-key=/usr/local/certificates/key
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.maxmindLicenseKey }}
|
|
||||||
- --maxmind-license-key={{ .Values.controller.maxmindLicenseKey }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if not (eq .Values.controller.healthCheckPath "/healthz") }}
|
|
||||||
- --health-check-path={{ .Values.controller.healthCheckPath }}
|
|
||||||
{{- end }}
|
|
||||||
{{- range $key, $value := .Values.controller.extraArgs }}
|
|
||||||
{{- /* Accept keys without values or with false as value */}}
|
|
||||||
{{- if eq ($value | quote | len) 2 }}
|
|
||||||
- --{{ $key }}
|
|
||||||
{{- else }}
|
|
||||||
- --{{ $key }}={{ $value }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
securityContext:
|
|
||||||
capabilities:
|
|
||||||
drop:
|
|
||||||
- ALL
|
|
||||||
add:
|
|
||||||
- NET_BIND_SERVICE
|
|
||||||
runAsUser: {{ .Values.controller.image.runAsUser }}
|
|
||||||
allowPrivilegeEscalation: {{ .Values.controller.image.allowPrivilegeEscalation }}
|
|
||||||
env:
|
|
||||||
- name: POD_NAME
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: metadata.name
|
|
||||||
- name: POD_NAMESPACE
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: metadata.namespace
|
|
||||||
{{- if .Values.controller.enableMimalloc }}
|
|
||||||
- name: LD_PRELOAD
|
|
||||||
value: /usr/local/lib/libmimalloc.so
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.extraEnvs }}
|
|
||||||
{{- toYaml .Values.controller.extraEnvs | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
livenessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /healthz
|
|
||||||
port: {{ .Values.controller.livenessProbe.port }}
|
|
||||||
scheme: HTTP
|
|
||||||
initialDelaySeconds: {{ .Values.controller.livenessProbe.initialDelaySeconds }}
|
|
||||||
periodSeconds: {{ .Values.controller.livenessProbe.periodSeconds }}
|
|
||||||
timeoutSeconds: {{ .Values.controller.livenessProbe.timeoutSeconds }}
|
|
||||||
successThreshold: {{ .Values.controller.livenessProbe.successThreshold }}
|
|
||||||
failureThreshold: {{ .Values.controller.livenessProbe.failureThreshold }}
|
|
||||||
readinessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /healthz
|
|
||||||
port: {{ .Values.controller.readinessProbe.port }}
|
|
||||||
scheme: HTTP
|
|
||||||
initialDelaySeconds: {{ .Values.controller.readinessProbe.initialDelaySeconds }}
|
|
||||||
periodSeconds: {{ .Values.controller.readinessProbe.periodSeconds }}
|
|
||||||
timeoutSeconds: {{ .Values.controller.readinessProbe.timeoutSeconds }}
|
|
||||||
successThreshold: {{ .Values.controller.readinessProbe.successThreshold }}
|
|
||||||
failureThreshold: {{ .Values.controller.readinessProbe.failureThreshold }}
|
|
||||||
ports:
|
|
||||||
{{- range $key, $value := .Values.controller.containerPort }}
|
|
||||||
- name: {{ $key }}
|
|
||||||
containerPort: {{ $value }}
|
|
||||||
protocol: TCP
|
|
||||||
{{- if $.Values.controller.hostPort.enabled }}
|
|
||||||
hostPort: {{ index $.Values.controller.hostPort.ports $key | default $value }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.metrics.enabled }}
|
|
||||||
- name: metrics
|
|
||||||
containerPort: {{ .Values.controller.metrics.port }}
|
|
||||||
protocol: TCP
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.admissionWebhooks.enabled }}
|
|
||||||
- name: webhook
|
|
||||||
containerPort: {{ .Values.controller.admissionWebhooks.port }}
|
|
||||||
protocol: TCP
|
|
||||||
{{- end }}
|
|
||||||
{{- range $key, $value := .Values.tcp }}
|
|
||||||
- name: {{ $key }}-tcp
|
|
||||||
containerPort: {{ $key }}
|
|
||||||
protocol: TCP
|
|
||||||
{{- if $.Values.controller.hostPort.enabled }}
|
|
||||||
hostPort: {{ $key }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- range $key, $value := .Values.udp }}
|
|
||||||
- name: {{ $key }}-udp
|
|
||||||
containerPort: {{ $key }}
|
|
||||||
protocol: UDP
|
|
||||||
{{- if $.Values.controller.hostPort.enabled }}
|
|
||||||
hostPort: {{ $key }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if (or .Values.controller.customTemplate.configMapName .Values.controller.extraVolumeMounts .Values.controller.admissionWebhooks.enabled) }}
|
|
||||||
volumeMounts:
|
|
||||||
{{- if .Values.controller.customTemplate.configMapName }}
|
|
||||||
- mountPath: /etc/nginx/template
|
|
||||||
name: nginx-template-volume
|
|
||||||
readOnly: true
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.admissionWebhooks.enabled }}
|
|
||||||
- name: webhook-cert
|
|
||||||
mountPath: /usr/local/certificates/
|
|
||||||
readOnly: true
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.extraVolumeMounts }}
|
|
||||||
{{- toYaml .Values.controller.extraVolumeMounts | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.resources }}
|
|
||||||
resources: {{ toYaml .Values.controller.resources | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.extraContainers }}
|
|
||||||
{{ toYaml .Values.controller.extraContainers | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.extraInitContainers }}
|
|
||||||
initContainers: {{ toYaml .Values.controller.extraInitContainers | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.hostNetwork }}
|
|
||||||
hostNetwork: {{ .Values.controller.hostNetwork }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.nodeSelector }}
|
|
||||||
nodeSelector: {{ toYaml .Values.controller.nodeSelector | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.tolerations }}
|
|
||||||
tolerations: {{ toYaml .Values.controller.tolerations | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.affinity }}
|
|
||||||
affinity: {{ toYaml .Values.controller.affinity | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.topologySpreadConstraints }}
|
|
||||||
topologySpreadConstraints: {{ toYaml .Values.controller.topologySpreadConstraints | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
serviceAccountName: {{ template "ingress-nginx.serviceAccountName" . }}
|
|
||||||
terminationGracePeriodSeconds: {{ .Values.controller.terminationGracePeriodSeconds }}
|
|
||||||
{{- if (or .Values.controller.customTemplate.configMapName .Values.controller.extraVolumeMounts .Values.controller.admissionWebhooks.enabled .Values.controller.extraVolumes) }}
|
|
||||||
volumes:
|
|
||||||
{{- if .Values.controller.customTemplate.configMapName }}
|
|
||||||
- name: nginx-template-volume
|
|
||||||
configMap:
|
|
||||||
name: {{ .Values.controller.customTemplate.configMapName }}
|
|
||||||
items:
|
|
||||||
- key: {{ .Values.controller.customTemplate.configMapKey }}
|
|
||||||
path: nginx.tmpl
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.admissionWebhooks.enabled }}
|
|
||||||
- name: webhook-cert
|
|
||||||
secret:
|
|
||||||
secretName: {{ include "ingress-nginx.fullname" . }}-admission
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.extraVolumes }}
|
|
||||||
{{ toYaml .Values.controller.extraVolumes | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
|
@ -1,256 +0,0 @@
|
||||||
{{- if or (eq .Values.controller.kind "Deployment") (eq .Values.controller.kind "Both") -}}
|
|
||||||
{{- include "isControllerTagValid" . -}}
|
|
||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
{{- with .Values.controller.labels }}
|
|
||||||
{{- toYaml . | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}
|
|
||||||
{{- if .Values.controller.annotations }}
|
|
||||||
annotations: {{ toYaml .Values.controller.annotations | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
{{- include "ingress-nginx.selectorLabels" . | nindent 6 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
{{- if not .Values.controller.autoscaling.enabled }}
|
|
||||||
replicas: {{ .Values.controller.replicaCount }}
|
|
||||||
{{- end }}
|
|
||||||
revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
|
|
||||||
{{- if .Values.controller.updateStrategy }}
|
|
||||||
strategy:
|
|
||||||
{{ toYaml .Values.controller.updateStrategy | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
minReadySeconds: {{ .Values.controller.minReadySeconds }}
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
{{- if .Values.controller.podAnnotations }}
|
|
||||||
annotations: {{ toYaml .Values.controller.podAnnotations | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.selectorLabels" . | nindent 8 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
{{- if .Values.controller.podLabels }}
|
|
||||||
{{- toYaml .Values.controller.podLabels | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
spec:
|
|
||||||
{{- if .Values.controller.dnsConfig }}
|
|
||||||
dnsConfig: {{ toYaml .Values.controller.dnsConfig | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
dnsPolicy: {{ .Values.controller.dnsPolicy }}
|
|
||||||
{{- if .Values.imagePullSecrets }}
|
|
||||||
imagePullSecrets: {{ toYaml .Values.imagePullSecrets | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.priorityClassName }}
|
|
||||||
priorityClassName: {{ .Values.controller.priorityClassName }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if or .Values.controller.podSecurityContext .Values.controller.sysctls }}
|
|
||||||
securityContext:
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.podSecurityContext }}
|
|
||||||
{{- toYaml .Values.controller.podSecurityContext | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.sysctls }}
|
|
||||||
sysctls:
|
|
||||||
{{- range $sysctl, $value := .Values.controller.sysctls }}
|
|
||||||
- name: {{ $sysctl | quote }}
|
|
||||||
value: {{ $value | quote }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
containers:
|
|
||||||
- name: controller
|
|
||||||
{{- with .Values.controller.image }}
|
|
||||||
image: "{{ template "system_default_registry" . }}{{.repository}}:{{ .tag }}{{- if (.digest) -}} @{{.digest}} {{- end -}}"
|
|
||||||
{{- end }}
|
|
||||||
imagePullPolicy: {{ .Values.controller.image.pullPolicy }}
|
|
||||||
{{- if .Values.controller.lifecycle }}
|
|
||||||
lifecycle: {{ toYaml .Values.controller.lifecycle | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
args:
|
|
||||||
- /nginx-ingress-controller
|
|
||||||
{{- if .Values.defaultBackend.enabled }}
|
|
||||||
- --default-backend-service=$(POD_NAMESPACE)/{{ include "ingress-nginx.defaultBackend.fullname" . }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.publishService.enabled }}
|
|
||||||
- --publish-service={{ template "ingress-nginx.controller.publishServicePath" . }}
|
|
||||||
{{- end }}
|
|
||||||
- --election-id={{ .Values.controller.electionID }}
|
|
||||||
- --ingress-class={{ .Values.controller.ingressClass }}
|
|
||||||
- --configmap=$(POD_NAMESPACE)/{{ include "ingress-nginx.controller.fullname" . }}
|
|
||||||
{{- if .Values.tcp }}
|
|
||||||
- --tcp-services-configmap=$(POD_NAMESPACE)/{{ include "ingress-nginx.fullname" . }}-tcp
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.udp }}
|
|
||||||
- --udp-services-configmap=$(POD_NAMESPACE)/{{ include "ingress-nginx.fullname" . }}-udp
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.scope.enabled }}
|
|
||||||
- --watch-namespace={{ default "$(POD_NAMESPACE)" .Values.controller.scope.namespace }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if and .Values.controller.reportNodeInternalIp .Values.controller.hostNetwork }}
|
|
||||||
- --report-node-internal-ip-address={{ .Values.controller.reportNodeInternalIp }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.admissionWebhooks.enabled }}
|
|
||||||
- --validating-webhook=:{{ .Values.controller.admissionWebhooks.port }}
|
|
||||||
- --validating-webhook-certificate=/usr/local/certificates/cert
|
|
||||||
- --validating-webhook-key=/usr/local/certificates/key
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.maxmindLicenseKey }}
|
|
||||||
- --maxmind-license-key={{ .Values.controller.maxmindLicenseKey }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if not (eq .Values.controller.healthCheckPath "/healthz") }}
|
|
||||||
- --health-check-path={{ .Values.controller.healthCheckPath }}
|
|
||||||
{{- end }}
|
|
||||||
{{- range $key, $value := .Values.controller.extraArgs }}
|
|
||||||
{{- /* Accept keys without values or with false as value */}}
|
|
||||||
{{- if eq ($value | quote | len) 2 }}
|
|
||||||
- --{{ $key }}
|
|
||||||
{{- else }}
|
|
||||||
- --{{ $key }}={{ $value }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
securityContext:
|
|
||||||
capabilities:
|
|
||||||
drop:
|
|
||||||
- ALL
|
|
||||||
add:
|
|
||||||
- NET_BIND_SERVICE
|
|
||||||
runAsUser: {{ .Values.controller.image.runAsUser }}
|
|
||||||
allowPrivilegeEscalation: {{ .Values.controller.image.allowPrivilegeEscalation }}
|
|
||||||
env:
|
|
||||||
- name: POD_NAME
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: metadata.name
|
|
||||||
- name: POD_NAMESPACE
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: metadata.namespace
|
|
||||||
{{- if .Values.controller.enableMimalloc }}
|
|
||||||
- name: LD_PRELOAD
|
|
||||||
value: /usr/local/lib/libmimalloc.so
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.extraEnvs }}
|
|
||||||
{{- toYaml .Values.controller.extraEnvs | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
livenessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: {{ .Values.controller.healthCheckPath }}
|
|
||||||
port: {{ .Values.controller.livenessProbe.port }}
|
|
||||||
scheme: HTTP
|
|
||||||
initialDelaySeconds: {{ .Values.controller.livenessProbe.initialDelaySeconds }}
|
|
||||||
periodSeconds: {{ .Values.controller.livenessProbe.periodSeconds }}
|
|
||||||
timeoutSeconds: {{ .Values.controller.livenessProbe.timeoutSeconds }}
|
|
||||||
successThreshold: {{ .Values.controller.livenessProbe.successThreshold }}
|
|
||||||
failureThreshold: {{ .Values.controller.livenessProbe.failureThreshold }}
|
|
||||||
readinessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: {{ .Values.controller.healthCheckPath }}
|
|
||||||
port: {{ .Values.controller.readinessProbe.port }}
|
|
||||||
scheme: HTTP
|
|
||||||
initialDelaySeconds: {{ .Values.controller.readinessProbe.initialDelaySeconds }}
|
|
||||||
periodSeconds: {{ .Values.controller.readinessProbe.periodSeconds }}
|
|
||||||
timeoutSeconds: {{ .Values.controller.readinessProbe.timeoutSeconds }}
|
|
||||||
successThreshold: {{ .Values.controller.readinessProbe.successThreshold }}
|
|
||||||
failureThreshold: {{ .Values.controller.readinessProbe.failureThreshold }}
|
|
||||||
ports:
|
|
||||||
{{- range $key, $value := .Values.controller.containerPort }}
|
|
||||||
- name: {{ $key }}
|
|
||||||
containerPort: {{ $value }}
|
|
||||||
protocol: TCP
|
|
||||||
{{- if $.Values.controller.hostPort.enabled }}
|
|
||||||
hostPort: {{ index $.Values.controller.hostPort.ports $key | default $value }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.metrics.enabled }}
|
|
||||||
- name: metrics
|
|
||||||
containerPort: {{ .Values.controller.metrics.port }}
|
|
||||||
protocol: TCP
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.admissionWebhooks.enabled }}
|
|
||||||
- name: webhook
|
|
||||||
containerPort: {{ .Values.controller.admissionWebhooks.port }}
|
|
||||||
protocol: TCP
|
|
||||||
{{- end }}
|
|
||||||
{{- range $key, $value := .Values.tcp }}
|
|
||||||
- name: {{ $key }}-tcp
|
|
||||||
containerPort: {{ $key }}
|
|
||||||
protocol: TCP
|
|
||||||
{{- if $.Values.controller.hostPort.enabled }}
|
|
||||||
hostPort: {{ $key }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- range $key, $value := .Values.udp }}
|
|
||||||
- name: {{ $key }}-udp
|
|
||||||
containerPort: {{ $key }}
|
|
||||||
protocol: UDP
|
|
||||||
{{- if $.Values.controller.hostPort.enabled }}
|
|
||||||
hostPort: {{ $key }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if (or .Values.controller.customTemplate.configMapName .Values.controller.extraVolumeMounts .Values.controller.admissionWebhooks.enabled) }}
|
|
||||||
volumeMounts:
|
|
||||||
{{- if .Values.controller.customTemplate.configMapName }}
|
|
||||||
- mountPath: /etc/nginx/template
|
|
||||||
name: nginx-template-volume
|
|
||||||
readOnly: true
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.admissionWebhooks.enabled }}
|
|
||||||
- name: webhook-cert
|
|
||||||
mountPath: /usr/local/certificates/
|
|
||||||
readOnly: true
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.extraVolumeMounts }}
|
|
||||||
{{- toYaml .Values.controller.extraVolumeMounts | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.resources }}
|
|
||||||
resources: {{ toYaml .Values.controller.resources | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.extraContainers }}
|
|
||||||
{{ toYaml .Values.controller.extraContainers | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.extraInitContainers }}
|
|
||||||
initContainers: {{ toYaml .Values.controller.extraInitContainers | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.hostNetwork }}
|
|
||||||
hostNetwork: {{ .Values.controller.hostNetwork }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.nodeSelector }}
|
|
||||||
nodeSelector: {{ toYaml .Values.controller.nodeSelector | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.tolerations }}
|
|
||||||
tolerations: {{ toYaml .Values.controller.tolerations | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.affinity }}
|
|
||||||
affinity: {{ toYaml .Values.controller.affinity | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.topologySpreadConstraints }}
|
|
||||||
topologySpreadConstraints: {{ toYaml .Values.controller.topologySpreadConstraints | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
serviceAccountName: {{ template "ingress-nginx.serviceAccountName" . }}
|
|
||||||
terminationGracePeriodSeconds: {{ .Values.controller.terminationGracePeriodSeconds }}
|
|
||||||
{{- if (or .Values.controller.customTemplate.configMapName .Values.controller.extraVolumeMounts .Values.controller.admissionWebhooks.enabled .Values.controller.extraVolumes) }}
|
|
||||||
volumes:
|
|
||||||
{{- if .Values.controller.customTemplate.configMapName }}
|
|
||||||
- name: nginx-template-volume
|
|
||||||
configMap:
|
|
||||||
name: {{ .Values.controller.customTemplate.configMapName }}
|
|
||||||
items:
|
|
||||||
- key: {{ .Values.controller.customTemplate.configMapKey }}
|
|
||||||
path: nginx.tmpl
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.admissionWebhooks.enabled }}
|
|
||||||
- name: webhook-cert
|
|
||||||
secret:
|
|
||||||
secretName: {{ include "ingress-nginx.fullname" . }}-admission
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.extraVolumes }}
|
|
||||||
{{ toYaml .Values.controller.extraVolumes | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
|
@ -1,36 +0,0 @@
|
||||||
{{- if and .Values.controller.autoscaling.enabled (or (eq .Values.controller.kind "Deployment") (eq .Values.controller.kind "Both")) -}}
|
|
||||||
apiVersion: autoscaling/v2beta2
|
|
||||||
kind: HorizontalPodAutoscaler
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}
|
|
||||||
spec:
|
|
||||||
scaleTargetRef:
|
|
||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}
|
|
||||||
minReplicas: {{ .Values.controller.autoscaling.minReplicas }}
|
|
||||||
maxReplicas: {{ .Values.controller.autoscaling.maxReplicas }}
|
|
||||||
metrics:
|
|
||||||
{{- with .Values.controller.autoscaling.targetCPUUtilizationPercentage }}
|
|
||||||
- type: Resource
|
|
||||||
resource:
|
|
||||||
name: cpu
|
|
||||||
target:
|
|
||||||
type: Utilization
|
|
||||||
averageUtilization: {{ . }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.controller.autoscaling.targetMemoryUtilizationPercentage }}
|
|
||||||
- type: Resource
|
|
||||||
resource:
|
|
||||||
name: memory
|
|
||||||
target:
|
|
||||||
type: Utilization
|
|
||||||
averageUtilization: {{ . }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.controller.autoscalingTemplate }}
|
|
||||||
{{- toYaml . | nindent 2 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
|
@ -1,15 +0,0 @@
|
||||||
{{- if or (and .Values.controller.autoscaling.enabled (gt (.Values.controller.autoscaling.minReplicas | int) 1)) (gt (.Values.controller.replicaCount | int) 1) -}}
|
|
||||||
apiVersion: policy/v1beta1
|
|
||||||
kind: PodDisruptionBudget
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
{{- include "ingress-nginx.selectorLabels" . | nindent 6 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
minAvailable: {{ .Values.controller.minAvailable }}
|
|
||||||
{{- end }}
|
|
|
@ -1,21 +0,0 @@
|
||||||
{{- if and .Values.controller.metrics.enabled .Values.controller.metrics.prometheusRule.enabled -}}
|
|
||||||
apiVersion: monitoring.coreos.com/v1
|
|
||||||
kind: PrometheusRule
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}
|
|
||||||
{{- if .Values.controller.metrics.prometheusRule.namespace }}
|
|
||||||
namespace: {{ .Values.controller.metrics.prometheusRule.namespace }}
|
|
||||||
{{- end }}
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
{{- if .Values.controller.metrics.prometheusRule.additionalLabels }}
|
|
||||||
{{- toYaml .Values.controller.metrics.prometheusRule.additionalLabels | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
spec:
|
|
||||||
{{- if .Values.controller.metrics.prometheusRule.rules }}
|
|
||||||
groups:
|
|
||||||
- name: {{ template "ingress-nginx.name" . }}
|
|
||||||
rules: {{- toYaml .Values.controller.metrics.prometheusRule.rules | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
|
@ -1,86 +0,0 @@
|
||||||
{{- if .Values.podSecurityPolicy.enabled -}}
|
|
||||||
apiVersion: policy/v1beta1
|
|
||||||
kind: PodSecurityPolicy
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
spec:
|
|
||||||
allowedCapabilities:
|
|
||||||
- NET_BIND_SERVICE
|
|
||||||
{{- if .Values.controller.sysctls }}
|
|
||||||
allowedUnsafeSysctls:
|
|
||||||
{{- range $sysctl, $value := .Values.controller.sysctls }}
|
|
||||||
- {{ $sysctl }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
privileged: false
|
|
||||||
allowPrivilegeEscalation: true
|
|
||||||
# Allow core volume types.
|
|
||||||
volumes:
|
|
||||||
- 'configMap'
|
|
||||||
#- 'emptyDir'
|
|
||||||
#- 'projected'
|
|
||||||
- 'secret'
|
|
||||||
#- 'downwardAPI'
|
|
||||||
{{- if .Values.controller.hostNetwork }}
|
|
||||||
hostNetwork: {{ .Values.controller.hostNetwork }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if or .Values.controller.hostNetwork .Values.controller.hostPort.enabled }}
|
|
||||||
hostPorts:
|
|
||||||
{{- if .Values.controller.hostNetwork }}
|
|
||||||
{{- range $key, $value := .Values.controller.containerPort }}
|
|
||||||
# {{ $key }}
|
|
||||||
- min: {{ $value }}
|
|
||||||
max: {{ $value }}
|
|
||||||
{{- end }}
|
|
||||||
{{- else if .Values.controller.hostPort.enabled }}
|
|
||||||
{{- range $key, $value := .Values.controller.hostPort.ports }}
|
|
||||||
# {{ $key }}
|
|
||||||
- min: {{ $value }}
|
|
||||||
max: {{ $value }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.metrics.enabled }}
|
|
||||||
# metrics
|
|
||||||
- min: {{ .Values.controller.metrics.port }}
|
|
||||||
max: {{ .Values.controller.metrics.port }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.admissionWebhooks.enabled }}
|
|
||||||
# admission webhooks
|
|
||||||
- min: {{ .Values.controller.admissionWebhooks.port }}
|
|
||||||
max: {{ .Values.controller.admissionWebhooks.port }}
|
|
||||||
{{- end }}
|
|
||||||
{{- range $key, $value := .Values.tcp }}
|
|
||||||
# {{ $key }}-tcp
|
|
||||||
- min: {{ $key }}
|
|
||||||
max: {{ $key }}
|
|
||||||
{{- end }}
|
|
||||||
{{- range $key, $value := .Values.udp }}
|
|
||||||
# {{ $key }}-udp
|
|
||||||
- min: {{ $key }}
|
|
||||||
max: {{ $key }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
hostIPC: false
|
|
||||||
hostPID: false
|
|
||||||
runAsUser:
|
|
||||||
# Require the container to run without root privileges.
|
|
||||||
rule: 'MustRunAsNonRoot'
|
|
||||||
supplementalGroups:
|
|
||||||
rule: 'MustRunAs'
|
|
||||||
ranges:
|
|
||||||
# Forbid adding the root group.
|
|
||||||
- min: 1
|
|
||||||
max: 65535
|
|
||||||
fsGroup:
|
|
||||||
rule: 'MustRunAs'
|
|
||||||
ranges:
|
|
||||||
# Forbid adding the root group.
|
|
||||||
- min: 1
|
|
||||||
max: 65535
|
|
||||||
readOnlyRootFilesystem: false
|
|
||||||
seLinux:
|
|
||||||
rule: 'RunAsAny'
|
|
||||||
{{- end }}
|
|
|
@ -1,96 +0,0 @@
|
||||||
{{- if .Values.rbac.create -}}
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: Role
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}
|
|
||||||
rules:
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- namespaces
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- configmaps
|
|
||||||
- pods
|
|
||||||
- secrets
|
|
||||||
- endpoints
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- services
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- update
|
|
||||||
- watch
|
|
||||||
- apiGroups:
|
|
||||||
- extensions
|
|
||||||
- "networking.k8s.io" # k8s 1.14+
|
|
||||||
resources:
|
|
||||||
- ingresses
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- apiGroups:
|
|
||||||
- extensions
|
|
||||||
- "networking.k8s.io" # k8s 1.14+
|
|
||||||
resources:
|
|
||||||
- ingresses/status
|
|
||||||
verbs:
|
|
||||||
- update
|
|
||||||
- apiGroups:
|
|
||||||
- "networking.k8s.io" # k8s 1.14+
|
|
||||||
resources:
|
|
||||||
- ingressclasses
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- configmaps
|
|
||||||
resourceNames:
|
|
||||||
- {{ .Values.controller.electionID }}-{{ .Values.controller.ingressClass }}
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- update
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- configmaps
|
|
||||||
verbs:
|
|
||||||
- create
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- endpoints
|
|
||||||
verbs:
|
|
||||||
- create
|
|
||||||
- get
|
|
||||||
- update
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- events
|
|
||||||
verbs:
|
|
||||||
- create
|
|
||||||
- patch
|
|
||||||
{{- if .Values.podSecurityPolicy.enabled }}
|
|
||||||
- apiGroups: [{{ template "podSecurityPolicy.apiGroup" . }}]
|
|
||||||
resources: ['podsecuritypolicies']
|
|
||||||
verbs: ['use']
|
|
||||||
resourceNames: [{{ include "ingress-nginx.fullname" . }}]
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
|
@ -1,17 +0,0 @@
|
||||||
{{- if .Values.rbac.create -}}
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: RoleBinding
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}
|
|
||||||
roleRef:
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
kind: Role
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: {{ template "ingress-nginx.serviceAccountName" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
{{- end }}
|
|
|
@ -1,44 +0,0 @@
|
||||||
{{- if and .Values.controller.service.enabled .Values.controller.service.internal.enabled .Values.controller.service.internal.annotations}}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
annotations:
|
|
||||||
{{- range $key, $value := .Values.controller.service.internal.annotations }}
|
|
||||||
{{ $key }}: {{ $value | quote }}
|
|
||||||
{{- end }}
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
{{- if .Values.controller.service.labels }}
|
|
||||||
{{- toYaml .Values.controller.service.labels | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}-internal
|
|
||||||
spec:
|
|
||||||
type: "{{ .Values.controller.service.type }}"
|
|
||||||
{{- if .Values.controller.service.internal.externalTrafficPolicy }}
|
|
||||||
externalTrafficPolicy: {{ .Values.controller.service.internal.externalTrafficPolicy }}
|
|
||||||
{{- end }}
|
|
||||||
ports:
|
|
||||||
{{- $setNodePorts := (or (eq .Values.controller.service.type "NodePort") (eq .Values.controller.service.type "LoadBalancer")) }}
|
|
||||||
{{- if .Values.controller.service.enableHttp }}
|
|
||||||
- name: http
|
|
||||||
port: {{ .Values.controller.service.ports.http }}
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: {{ .Values.controller.service.targetPorts.http }}
|
|
||||||
{{- if (and $setNodePorts (not (empty .Values.controller.service.nodePorts.http))) }}
|
|
||||||
nodePort: {{ .Values.controller.service.nodePorts.http }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.service.enableHttps }}
|
|
||||||
- name: https
|
|
||||||
port: {{ .Values.controller.service.ports.https }}
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: {{ .Values.controller.service.targetPorts.https }}
|
|
||||||
{{- if (and $setNodePorts (not (empty .Values.controller.service.nodePorts.https))) }}
|
|
||||||
nodePort: {{ .Values.controller.service.nodePorts.https }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
selector:
|
|
||||||
{{- include "ingress-nginx.selectorLabels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
{{- end }}
|
|
|
@ -1,43 +0,0 @@
|
||||||
{{- if .Values.controller.metrics.enabled -}}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
{{- if .Values.controller.metrics.service.annotations }}
|
|
||||||
annotations: {{ toYaml .Values.controller.metrics.service.annotations | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
{{- if .Values.controller.metrics.service.labels }}
|
|
||||||
{{- toYaml .Values.controller.metrics.service.labels | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}-metrics
|
|
||||||
spec:
|
|
||||||
type: {{ .Values.controller.metrics.service.type }}
|
|
||||||
{{- if .Values.controller.metrics.service.clusterIP }}
|
|
||||||
clusterIP: {{ .Values.controller.metrics.service.clusterIP }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.metrics.service.externalIPs }}
|
|
||||||
externalIPs: {{ toYaml .Values.controller.metrics.service.externalIPs | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.metrics.service.loadBalancerIP }}
|
|
||||||
loadBalancerIP: {{ .Values.controller.metrics.service.loadBalancerIP }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.metrics.service.loadBalancerSourceRanges }}
|
|
||||||
loadBalancerSourceRanges: {{ toYaml .Values.controller.metrics.service.loadBalancerSourceRanges | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.metrics.service.externalTrafficPolicy }}
|
|
||||||
externalTrafficPolicy: {{ .Values.controller.metrics.service.externalTrafficPolicy }}
|
|
||||||
{{- end }}
|
|
||||||
ports:
|
|
||||||
- name: metrics
|
|
||||||
port: {{ .Values.controller.metrics.service.servicePort }}
|
|
||||||
targetPort: metrics
|
|
||||||
{{- $setNodePorts := (or (eq .Values.controller.metrics.service.type "NodePort") (eq .Values.controller.metrics.service.type "LoadBalancer")) }}
|
|
||||||
{{- if (and $setNodePorts (not (empty .Values.controller.metrics.service.nodePort))) }}
|
|
||||||
nodePort: {{ .Values.controller.metrics.service.nodePort }}
|
|
||||||
{{- end }}
|
|
||||||
selector:
|
|
||||||
{{- include "ingress-nginx.selectorLabels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
{{- end }}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{{- if .Values.controller.admissionWebhooks.enabled -}}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
{{- if .Values.controller.admissionWebhooks.service.annotations }}
|
|
||||||
annotations: {{ toYaml .Values.controller.admissionWebhooks.service.annotations | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}-admission
|
|
||||||
spec:
|
|
||||||
type: {{ .Values.controller.admissionWebhooks.service.type }}
|
|
||||||
{{- if .Values.controller.admissionWebhooks.service.clusterIP }}
|
|
||||||
clusterIP: {{ .Values.controller.admissionWebhooks.service.clusterIP }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.admissionWebhooks.service.externalIPs }}
|
|
||||||
externalIPs: {{ toYaml .Values.controller.admissionWebhooks.service.externalIPs | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.admissionWebhooks.service.loadBalancerIP }}
|
|
||||||
loadBalancerIP: {{ .Values.controller.admissionWebhooks.service.loadBalancerIP }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.admissionWebhooks.service.loadBalancerSourceRanges }}
|
|
||||||
loadBalancerSourceRanges: {{ toYaml .Values.controller.admissionWebhooks.service.loadBalancerSourceRanges | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
ports:
|
|
||||||
- name: https-webhook
|
|
||||||
port: 443
|
|
||||||
targetPort: webhook
|
|
||||||
selector:
|
|
||||||
{{- include "ingress-nginx.selectorLabels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
{{- end }}
|
|
|
@ -1,83 +0,0 @@
|
||||||
{{- if .Values.controller.service.enabled -}}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
{{- if .Values.controller.service.annotations }}
|
|
||||||
annotations: {{ toYaml .Values.controller.service.annotations | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
{{- if .Values.controller.service.labels }}
|
|
||||||
{{- toYaml .Values.controller.service.labels | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}
|
|
||||||
spec:
|
|
||||||
type: {{ .Values.controller.service.type }}
|
|
||||||
{{- if .Values.controller.service.clusterIP }}
|
|
||||||
clusterIP: {{ .Values.controller.service.clusterIP }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.service.externalIPs }}
|
|
||||||
externalIPs: {{ toYaml .Values.controller.service.externalIPs | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.service.loadBalancerIP }}
|
|
||||||
loadBalancerIP: {{ .Values.controller.service.loadBalancerIP }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.service.loadBalancerSourceRanges }}
|
|
||||||
loadBalancerSourceRanges: {{ toYaml .Values.controller.service.loadBalancerSourceRanges | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.service.externalTrafficPolicy }}
|
|
||||||
externalTrafficPolicy: {{ .Values.controller.service.externalTrafficPolicy }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.service.sessionAffinity }}
|
|
||||||
sessionAffinity: {{ .Values.controller.service.sessionAffinity }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.service.healthCheckNodePort }}
|
|
||||||
healthCheckNodePort: {{ .Values.controller.service.healthCheckNodePort }}
|
|
||||||
{{- end }}
|
|
||||||
ports:
|
|
||||||
{{- $setNodePorts := (or (eq .Values.controller.service.type "NodePort") (eq .Values.controller.service.type "LoadBalancer")) }}
|
|
||||||
{{- if .Values.controller.service.enableHttp }}
|
|
||||||
- name: http
|
|
||||||
port: {{ .Values.controller.service.ports.http }}
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: {{ .Values.controller.service.targetPorts.http }}
|
|
||||||
{{- if (and $setNodePorts (not (empty .Values.controller.service.nodePorts.http))) }}
|
|
||||||
nodePort: {{ .Values.controller.service.nodePorts.http }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.service.enableHttps }}
|
|
||||||
- name: https
|
|
||||||
port: {{ .Values.controller.service.ports.https }}
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: {{ .Values.controller.service.targetPorts.https }}
|
|
||||||
{{- if (and $setNodePorts (not (empty .Values.controller.service.nodePorts.https))) }}
|
|
||||||
nodePort: {{ .Values.controller.service.nodePorts.https }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- range $key, $value := .Values.tcp }}
|
|
||||||
- name: {{ $key }}-tcp
|
|
||||||
port: {{ $key }}
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: {{ $key }}-tcp
|
|
||||||
{{- if $.Values.controller.service.nodePorts.tcp }}
|
|
||||||
{{- if index $.Values.controller.service.nodePorts.tcp $key }}
|
|
||||||
nodePort: {{ index $.Values.controller.service.nodePorts.tcp $key }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- range $key, $value := .Values.udp }}
|
|
||||||
- name: {{ $key }}-udp
|
|
||||||
port: {{ $key }}
|
|
||||||
protocol: UDP
|
|
||||||
targetPort: {{ $key }}-udp
|
|
||||||
{{- if $.Values.controller.service.nodePorts.udp }}
|
|
||||||
{{- if index $.Values.controller.service.nodePorts.udp $key }}
|
|
||||||
nodePort: {{ index $.Values.controller.service.nodePorts.udp $key }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
selector:
|
|
||||||
{{- include "ingress-nginx.selectorLabels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
{{- end }}
|
|
|
@ -1,9 +0,0 @@
|
||||||
{{- if or .Values.serviceAccount.create -}}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
name: {{ template "ingress-nginx.serviceAccountName" . }}
|
|
||||||
{{- end }}
|
|
|
@ -1,42 +0,0 @@
|
||||||
{{- if and .Values.controller.metrics.enabled .Values.controller.metrics.serviceMonitor.enabled -}}
|
|
||||||
apiVersion: monitoring.coreos.com/v1
|
|
||||||
kind: ServiceMonitor
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}
|
|
||||||
{{- if .Values.controller.metrics.serviceMonitor.namespace }}
|
|
||||||
namespace: {{ .Values.controller.metrics.serviceMonitor.namespace }}
|
|
||||||
{{- end }}
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
{{- if .Values.controller.metrics.serviceMonitor.additionalLabels }}
|
|
||||||
{{- toYaml .Values.controller.metrics.serviceMonitor.additionalLabels | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- port: metrics
|
|
||||||
interval: {{ .Values.controller.metrics.serviceMonitor.scrapeInterval }}
|
|
||||||
{{- if .Values.controller.metrics.serviceMonitor.honorLabels }}
|
|
||||||
honorLabels: true
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.metrics.serviceMonitor.metricRelabelings }}
|
|
||||||
metricRelabelings: {{ toYaml .Values.controller.metrics.serviceMonitor.metricRelabelings | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.metrics.serviceMonitor.namespaceSelector }}
|
|
||||||
namespaceSelector: {{ toYaml .Values.controller.metrics.serviceMonitor.namespaceSelector | nindent 4 }}
|
|
||||||
{{ else }}
|
|
||||||
namespaceSelector:
|
|
||||||
matchNames:
|
|
||||||
- {{ .Release.Namespace }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.controller.metrics.serviceMonitor.targetLabels }}
|
|
||||||
targetLabels:
|
|
||||||
{{- range .Values.controller.metrics.serviceMonitor.targetLabels }}
|
|
||||||
- {{ . }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
{{- include "ingress-nginx.selectorLabels" . | nindent 6 }}
|
|
||||||
app.kubernetes.io/component: controller
|
|
||||||
{{- end }}
|
|
|
@ -1,97 +0,0 @@
|
||||||
{{- if .Values.defaultBackend.enabled -}}
|
|
||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: default-backend
|
|
||||||
name: {{ include "ingress-nginx.defaultBackend.fullname" . }}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
{{- include "ingress-nginx.selectorLabels" . | nindent 6 }}
|
|
||||||
app.kubernetes.io/component: default-backend
|
|
||||||
replicas: {{ .Values.defaultBackend.replicaCount }}
|
|
||||||
revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
{{- if .Values.defaultBackend.podAnnotations }}
|
|
||||||
annotations: {{ toYaml .Values.defaultBackend.podAnnotations | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.selectorLabels" . | nindent 8 }}
|
|
||||||
app.kubernetes.io/component: default-backend
|
|
||||||
{{- if .Values.defaultBackend.podLabels }}
|
|
||||||
{{- toYaml .Values.defaultBackend.podLabels | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
spec:
|
|
||||||
{{- if .Values.imagePullSecrets }}
|
|
||||||
imagePullSecrets: {{ toYaml .Values.imagePullSecrets | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.defaultBackend.priorityClassName }}
|
|
||||||
priorityClassName: {{ .Values.defaultBackend.priorityClassName }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.defaultBackend.podSecurityContext }}
|
|
||||||
securityContext: {{ toYaml .Values.defaultBackend.podSecurityContext | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
containers:
|
|
||||||
- name: {{ template "ingress-nginx.name" . }}-default-backend
|
|
||||||
{{- with .Values.defaultBackend.image }}
|
|
||||||
image: "{{ template "system_default_registry" . }}{{.repository}}:{{ .tag }}{{- if (.digest) -}} @{{.digest}} {{- end -}}"
|
|
||||||
{{- end }}
|
|
||||||
imagePullPolicy: {{ .Values.defaultBackend.image.pullPolicy }}
|
|
||||||
{{- if .Values.defaultBackend.extraArgs }}
|
|
||||||
args:
|
|
||||||
{{- range $key, $value := .Values.defaultBackend.extraArgs }}
|
|
||||||
{{- /* Accept keys without values or with false as value */}}
|
|
||||||
{{- if eq ($value | quote | len) 2 }}
|
|
||||||
- --{{ $key }}
|
|
||||||
{{- else }}
|
|
||||||
- --{{ $key }}={{ $value }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
securityContext:
|
|
||||||
runAsUser: {{ .Values.defaultBackend.image.runAsUser }}
|
|
||||||
{{- if .Values.defaultBackend.extraEnvs }}
|
|
||||||
env: {{ toYaml .Values.defaultBackend.extraEnvs | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
livenessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /healthz
|
|
||||||
port: {{ .Values.defaultBackend.port }}
|
|
||||||
scheme: HTTP
|
|
||||||
initialDelaySeconds: {{ .Values.defaultBackend.livenessProbe.initialDelaySeconds }}
|
|
||||||
periodSeconds: {{ .Values.defaultBackend.livenessProbe.periodSeconds }}
|
|
||||||
timeoutSeconds: {{ .Values.defaultBackend.livenessProbe.timeoutSeconds }}
|
|
||||||
successThreshold: {{ .Values.defaultBackend.livenessProbe.successThreshold }}
|
|
||||||
failureThreshold: {{ .Values.defaultBackend.livenessProbe.failureThreshold }}
|
|
||||||
readinessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /healthz
|
|
||||||
port: {{ .Values.defaultBackend.port }}
|
|
||||||
scheme: HTTP
|
|
||||||
initialDelaySeconds: {{ .Values.defaultBackend.readinessProbe.initialDelaySeconds }}
|
|
||||||
periodSeconds: {{ .Values.defaultBackend.readinessProbe.periodSeconds }}
|
|
||||||
timeoutSeconds: {{ .Values.defaultBackend.readinessProbe.timeoutSeconds }}
|
|
||||||
successThreshold: {{ .Values.defaultBackend.readinessProbe.successThreshold }}
|
|
||||||
failureThreshold: {{ .Values.defaultBackend.readinessProbe.failureThreshold }}
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
containerPort: {{ .Values.defaultBackend.port }}
|
|
||||||
protocol: TCP
|
|
||||||
{{- if .Values.defaultBackend.resources }}
|
|
||||||
resources: {{ toYaml .Values.defaultBackend.resources | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.defaultBackend.nodeSelector }}
|
|
||||||
nodeSelector: {{ toYaml .Values.defaultBackend.nodeSelector | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
serviceAccountName: {{ template "ingress-nginx.defaultBackend.serviceAccountName" . }}
|
|
||||||
{{- if .Values.defaultBackend.tolerations }}
|
|
||||||
tolerations: {{ toYaml .Values.defaultBackend.tolerations | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if .Values.defaultBackend.affinity }}
|
|
||||||
affinity: {{ toYaml .Values.defaultBackend.affinity | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
terminationGracePeriodSeconds: 60
|
|
||||||
{{- end }}
|
|
|
@ -1,15 +0,0 @@
|
||||||
{{- if gt (.Values.defaultBackend.replicaCount | int) 1 -}}
|
|
||||||
apiVersion: policy/v1beta1
|
|
||||||
kind: PodDisruptionBudget
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
|
||||||
app.kubernetes.io/component: default-backend
|
|
||||||
name: {{ include "ingress-nginx.defaultBackend.fullname" . }}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
{{- include "ingress-nginx.selectorLabels" . | nindent 6 }}
|
|
||||||
app.kubernetes.io/component: default-backend
|
|
||||||
minAvailable: {{ .Values.defaultBackend.minAvailable }}
|
|
||||||
{{- end }}
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue