feat: manage rancher, purelb, cert-manager (#395)
This change will install rancher, purelb and cert-manager, then configure a dmz and common ip pool to be used by loadbalancers. The nginx ingres controller is configured to use 198.18.200.0 (common) and announce the ip from all nodes so that it becomes an anycast ip in ospf. - manage the install of rancher, purelb and cert-manager - add rancher ingress routes - add nginx externalip/loadBalancer Reviewed-on: #395
This commit is contained in:
parent
6e4bc9fbc7
commit
4e77fb7ee7
@ -23,7 +23,6 @@ rke2::config_hash:
|
|||||||
- "country=%{facts.country}"
|
- "country=%{facts.country}"
|
||||||
- "asset=%{facts.dmi.product.serial_number}"
|
- "asset=%{facts.dmi.product.serial_number}"
|
||||||
- "zone=%{zone}"
|
- "zone=%{zone}"
|
||||||
- "environment=%{environment}"
|
|
||||||
|
|
||||||
# FIXME: puppet-python wants to try manage python-dev, which is required by the ceph package
|
# FIXME: puppet-python wants to try manage python-dev, which is required by the ceph package
|
||||||
python::manage_dev_package: false
|
python::manage_dev_package: false
|
||||||
|
|||||||
@ -5,8 +5,17 @@ rke2::helm_install: true
|
|||||||
rke2::helm_repos:
|
rke2::helm_repos:
|
||||||
metallb: https://metallb.github.io/metallb
|
metallb: https://metallb.github.io/metallb
|
||||||
rancher-stable: https://releases.rancher.com/server-charts/stable
|
rancher-stable: https://releases.rancher.com/server-charts/stable
|
||||||
|
purelb: https://gitlab.com/api/v4/projects/20400619/packages/helm/stable
|
||||||
|
jetstack: https://charts.jetstack.io
|
||||||
rke2::extra_config_files:
|
rke2::extra_config_files:
|
||||||
- rke2-canal-config
|
- 000_namespaces
|
||||||
|
- 010_rke2-canal-config
|
||||||
|
- 010_cert-manager
|
||||||
|
- 010_purelb
|
||||||
|
- 010_rancher
|
||||||
|
- 100_purelb_config
|
||||||
|
- 200_ingres_lb_nginx
|
||||||
|
- 201_ingres_route_rancher
|
||||||
rke2::config_hash:
|
rke2::config_hash:
|
||||||
advertise-address: "%{hiera('networking_loopback0_ip')}"
|
advertise-address: "%{hiera('networking_loopback0_ip')}"
|
||||||
cluster-domain: "svc.k8s.unkin.net"
|
cluster-domain: "svc.k8s.unkin.net"
|
||||||
@ -28,6 +37,7 @@ rke2::config_hash:
|
|||||||
kube-controller-manager-arg:
|
kube-controller-manager-arg:
|
||||||
- '--node-monitor-period=4s'
|
- '--node-monitor-period=4s'
|
||||||
protect-kernel-defaults: true
|
protect-kernel-defaults: true
|
||||||
|
disable-kube-proxy: false
|
||||||
|
|
||||||
# configure consul service
|
# configure consul service
|
||||||
consul::services:
|
consul::services:
|
||||||
|
|||||||
6
modules/rke2/files/000_namespaces.yaml
Normal file
6
modules/rke2/files/000_namespaces.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: cattle-system
|
||||||
|
labels:
|
||||||
|
kubernetes.io/metadata.name: cattle-system
|
||||||
12944
modules/rke2/files/010_cert-manager.yaml
Normal file
12944
modules/rke2/files/010_cert-manager.yaml
Normal file
File diff suppressed because it is too large
Load Diff
325
modules/rke2/files/010_purelb.yaml
Normal file
325
modules/rke2/files/010_purelb.yaml
Normal file
@ -0,0 +1,325 @@
|
|||||||
|
# Source: purelb/templates/serviceaccount-allocator.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: purelb-v0.13.0
|
||||||
|
app.kubernetes.io/name: purelb
|
||||||
|
app.kubernetes.io/instance: purelb
|
||||||
|
app.kubernetes.io/version: v0.13.0
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
name: allocator
|
||||||
|
namespace: purelb
|
||||||
|
---
|
||||||
|
# Source: purelb/templates/serviceaccount-lbnodeagent.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: purelb-v0.13.0
|
||||||
|
app.kubernetes.io/name: purelb
|
||||||
|
app.kubernetes.io/instance: purelb
|
||||||
|
app.kubernetes.io/version: v0.13.0
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
name: lbnodeagent
|
||||||
|
namespace: purelb
|
||||||
|
---
|
||||||
|
# Source: purelb/templates/clusterrole-allocator.yaml
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: purelb-v0.13.0
|
||||||
|
app.kubernetes.io/name: purelb
|
||||||
|
app.kubernetes.io/instance: purelb
|
||||||
|
app.kubernetes.io/version: v0.13.0
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
name: purelb:allocator
|
||||||
|
rules:
|
||||||
|
- apiGroups: [purelb.io]
|
||||||
|
resources: [servicegroups, lbnodeagents]
|
||||||
|
verbs: [get, list, watch, update]
|
||||||
|
- apiGroups: ['']
|
||||||
|
resources: [services]
|
||||||
|
verbs: [get, list, watch, update]
|
||||||
|
- apiGroups: ['']
|
||||||
|
resources: [services/status]
|
||||||
|
verbs: [update]
|
||||||
|
- apiGroups: ['']
|
||||||
|
resources: [events]
|
||||||
|
verbs: [create, patch]
|
||||||
|
- apiGroups: ['']
|
||||||
|
resources: [namespaces]
|
||||||
|
verbs: [get, list]
|
||||||
|
- apiGroups: [policy]
|
||||||
|
resourceNames: [allocator]
|
||||||
|
resources: [podsecuritypolicies]
|
||||||
|
verbs: [use]
|
||||||
|
---
|
||||||
|
# Source: purelb/templates/clusterrole-lbnodeagent.yaml
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: purelb-v0.13.0
|
||||||
|
app.kubernetes.io/name: purelb
|
||||||
|
app.kubernetes.io/instance: purelb
|
||||||
|
app.kubernetes.io/version: v0.13.0
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
name: purelb:lbnodeagent
|
||||||
|
rules:
|
||||||
|
- apiGroups: [purelb.io]
|
||||||
|
resources: [servicegroups, lbnodeagents]
|
||||||
|
verbs: [get, list, watch, update]
|
||||||
|
- apiGroups: ['']
|
||||||
|
resources: [endpoints, nodes]
|
||||||
|
verbs: [get, list, watch]
|
||||||
|
- apiGroups: ['']
|
||||||
|
resources: [services]
|
||||||
|
verbs: [get, list, watch, update]
|
||||||
|
- apiGroups: ['']
|
||||||
|
resources: [events]
|
||||||
|
verbs: [create, patch]
|
||||||
|
- apiGroups: ['']
|
||||||
|
resources: [namespaces]
|
||||||
|
verbs: [get, list]
|
||||||
|
- apiGroups: [policy]
|
||||||
|
resourceNames: [lbnodeagent]
|
||||||
|
resources: [podsecuritypolicies]
|
||||||
|
verbs: [use]
|
||||||
|
---
|
||||||
|
# Source: purelb/templates/clusterrolebinding-allocator.yaml
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: purelb-v0.13.0
|
||||||
|
app.kubernetes.io/name: purelb
|
||||||
|
app.kubernetes.io/instance: purelb
|
||||||
|
app.kubernetes.io/version: v0.13.0
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
name: purelb:allocator
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: purelb:allocator
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: allocator
|
||||||
|
namespace: purelb
|
||||||
|
---
|
||||||
|
# Source: purelb/templates/clusterrolebinding-lbnodeagent.yaml
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: purelb-v0.13.0
|
||||||
|
app.kubernetes.io/name: purelb
|
||||||
|
app.kubernetes.io/instance: purelb
|
||||||
|
app.kubernetes.io/version: v0.13.0
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
name: purelb:lbnodeagent
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: purelb:lbnodeagent
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: lbnodeagent
|
||||||
|
namespace: purelb
|
||||||
|
---
|
||||||
|
# Source: purelb/templates/role.yaml
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: Role
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: purelb-v0.13.0
|
||||||
|
app.kubernetes.io/name: purelb
|
||||||
|
app.kubernetes.io/instance: purelb
|
||||||
|
app.kubernetes.io/version: v0.13.0
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
name: pod-lister
|
||||||
|
namespace: purelb
|
||||||
|
rules:
|
||||||
|
- apiGroups: ['']
|
||||||
|
resources: [pods]
|
||||||
|
verbs: [list]
|
||||||
|
---
|
||||||
|
# Source: purelb/templates/rolebinding.yaml
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: purelb-v0.13.0
|
||||||
|
app.kubernetes.io/name: purelb
|
||||||
|
app.kubernetes.io/instance: purelb
|
||||||
|
app.kubernetes.io/version: v0.13.0
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
name: pod-lister
|
||||||
|
namespace: purelb
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: Role
|
||||||
|
name: pod-lister
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: lbnodeagent
|
||||||
|
---
|
||||||
|
# Source: purelb/templates/daemonset.yaml
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: DaemonSet
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: purelb-v0.13.0
|
||||||
|
app.kubernetes.io/name: purelb
|
||||||
|
app.kubernetes.io/instance: purelb
|
||||||
|
app.kubernetes.io/version: v0.13.0
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/component: lbnodeagent
|
||||||
|
name: lbnodeagent
|
||||||
|
namespace: purelb
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: purelb
|
||||||
|
app.kubernetes.io/instance: purelb
|
||||||
|
app.kubernetes.io/component: lbnodeagent
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
prometheus.io/port: '7472'
|
||||||
|
prometheus.io/scrape: 'true'
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: purelb-v0.13.0
|
||||||
|
app.kubernetes.io/name: purelb
|
||||||
|
app.kubernetes.io/instance: purelb
|
||||||
|
app.kubernetes.io/version: v0.13.0
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/component: lbnodeagent
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- env:
|
||||||
|
- name: NETBOX_USER_TOKEN
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: netbox-client
|
||||||
|
key: user-token
|
||||||
|
optional: true
|
||||||
|
- name: DEFAULT_ANNOUNCER
|
||||||
|
value: PureLB
|
||||||
|
- name: PURELB_NODE_NAME
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: spec.nodeName
|
||||||
|
- name: PURELB_HOST
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: status.hostIP
|
||||||
|
- name: PURELB_ML_NAMESPACE
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.namespace
|
||||||
|
- name: PURELB_ML_LABELS
|
||||||
|
value: app.kubernetes.io/name=purelb,app.kubernetes.io/component=lbnodeagent
|
||||||
|
- name: ML_GROUP
|
||||||
|
value: 8sb7ikA5qHwQQqxc
|
||||||
|
image: registry.gitlab.com/purelb/purelb/lbnodeagent:v0.13.0
|
||||||
|
imagePullPolicy: Always
|
||||||
|
name: lbnodeagent
|
||||||
|
ports:
|
||||||
|
- containerPort: 7472
|
||||||
|
name: monitoring
|
||||||
|
resources:
|
||||||
|
securityContext:
|
||||||
|
capabilities:
|
||||||
|
add: [NET_ADMIN, NET_RAW]
|
||||||
|
drop: [ALL]
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
runAsGroup: 0
|
||||||
|
runAsUser: 0
|
||||||
|
hostNetwork: true
|
||||||
|
nodeSelector:
|
||||||
|
kubernetes.io/os: linux
|
||||||
|
serviceAccountName: lbnodeagent
|
||||||
|
terminationGracePeriodSeconds: 2
|
||||||
|
---
|
||||||
|
# Source: purelb/templates/deployment.yaml
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: purelb-v0.13.0
|
||||||
|
app.kubernetes.io/name: purelb
|
||||||
|
app.kubernetes.io/instance: purelb
|
||||||
|
app.kubernetes.io/version: v0.13.0
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/component: allocator
|
||||||
|
name: allocator
|
||||||
|
namespace: purelb
|
||||||
|
spec:
|
||||||
|
revisionHistoryLimit: 3
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: purelb
|
||||||
|
app.kubernetes.io/instance: purelb
|
||||||
|
app.kubernetes.io/component: allocator
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
prometheus.io/port: '7472'
|
||||||
|
prometheus.io/scrape: 'true'
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: purelb-v0.13.0
|
||||||
|
app.kubernetes.io/name: purelb
|
||||||
|
app.kubernetes.io/instance: purelb
|
||||||
|
app.kubernetes.io/version: v0.13.0
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/component: allocator
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- env:
|
||||||
|
- name: NETBOX_USER_TOKEN
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: netbox-client
|
||||||
|
key: user-token
|
||||||
|
optional: true
|
||||||
|
- name: DEFAULT_ANNOUNCER
|
||||||
|
value: PureLB
|
||||||
|
image: registry.gitlab.com/purelb/purelb/allocator:v0.13.0
|
||||||
|
imagePullPolicy: Always
|
||||||
|
name: allocator
|
||||||
|
ports:
|
||||||
|
- containerPort: 7472
|
||||||
|
name: monitoring
|
||||||
|
resources:
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop: [all]
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
nodeSelector:
|
||||||
|
kubernetes.io/os: linux
|
||||||
|
securityContext:
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 65534
|
||||||
|
serviceAccountName: allocator
|
||||||
|
terminationGracePeriodSeconds: 0
|
||||||
|
---
|
||||||
|
# Source: purelb/templates/lbnodeagent.yaml
|
||||||
|
apiVersion: purelb.io/v1
|
||||||
|
kind: LBNodeAgent
|
||||||
|
metadata:
|
||||||
|
name: default
|
||||||
|
namespace: purelb
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: purelb-v0.13.0
|
||||||
|
app.kubernetes.io/name: purelb
|
||||||
|
app.kubernetes.io/instance: purelb
|
||||||
|
app.kubernetes.io/version: v0.13.0
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
spec:
|
||||||
|
local:
|
||||||
|
localint: default
|
||||||
|
extlbint: kube-lb0
|
||||||
|
sendgarp: false
|
||||||
695
modules/rke2/files/010_rancher.yaml
Normal file
695
modules/rke2/files/010_rancher.yaml
Normal file
@ -0,0 +1,695 @@
|
|||||||
|
# Source: rancher/templates/priorityClass.yaml
|
||||||
|
apiVersion: scheduling.k8s.io/v1
|
||||||
|
kind: PriorityClass
|
||||||
|
metadata:
|
||||||
|
name: rancher-critical
|
||||||
|
labels:
|
||||||
|
app: rancher
|
||||||
|
chart: rancher-2.12.1
|
||||||
|
heritage: Helm
|
||||||
|
release: rancher
|
||||||
|
value: 1000000000
|
||||||
|
globalDefault: false
|
||||||
|
description: Priority class used by pods critical to rancher's functionality.
|
||||||
|
---
|
||||||
|
# Source: rancher/templates/serviceAccount.yaml
|
||||||
|
kind: ServiceAccount
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: rancher
|
||||||
|
labels:
|
||||||
|
app: rancher
|
||||||
|
chart: rancher-2.12.1
|
||||||
|
heritage: Helm
|
||||||
|
release: rancher
|
||||||
|
---
|
||||||
|
# Source: rancher/templates/configMap.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: rancher-config
|
||||||
|
labels:
|
||||||
|
app: rancher
|
||||||
|
chart: rancher-2.12.1
|
||||||
|
heritage: Helm
|
||||||
|
release: rancher
|
||||||
|
app.kubernetes.io/part-of: rancher
|
||||||
|
data:
|
||||||
|
priorityClassName: rancher-critical
|
||||||
|
---
|
||||||
|
# Source: rancher/templates/clusterRoleBinding.yaml
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: rancher
|
||||||
|
labels:
|
||||||
|
app: rancher
|
||||||
|
chart: rancher-2.12.1
|
||||||
|
heritage: Helm
|
||||||
|
release: rancher
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: rancher
|
||||||
|
namespace: cattle-system
|
||||||
|
roleRef:
|
||||||
|
kind: ClusterRole
|
||||||
|
name: cluster-admin
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
---
|
||||||
|
# Source: rancher/templates/service.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: rancher
|
||||||
|
labels:
|
||||||
|
app: rancher
|
||||||
|
chart: rancher-2.12.1
|
||||||
|
heritage: Helm
|
||||||
|
release: rancher
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
targetPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
- port: 443
|
||||||
|
targetPort: 444
|
||||||
|
protocol: TCP
|
||||||
|
name: https-internal
|
||||||
|
selector:
|
||||||
|
app: rancher
|
||||||
|
---
|
||||||
|
# Source: rancher/templates/deployment.yaml
|
||||||
|
kind: Deployment
|
||||||
|
apiVersion: apps/v1
|
||||||
|
metadata:
|
||||||
|
name: rancher
|
||||||
|
annotations:
|
||||||
|
labels:
|
||||||
|
app: rancher
|
||||||
|
chart: rancher-2.12.1
|
||||||
|
heritage: Helm
|
||||||
|
release: rancher
|
||||||
|
spec:
|
||||||
|
replicas: 3
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: rancher
|
||||||
|
strategy:
|
||||||
|
rollingUpdate:
|
||||||
|
maxSurge: 1
|
||||||
|
maxUnavailable: 1
|
||||||
|
type: RollingUpdate
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: rancher
|
||||||
|
release: rancher
|
||||||
|
spec:
|
||||||
|
priorityClassName: rancher-critical
|
||||||
|
serviceAccountName: rancher
|
||||||
|
affinity:
|
||||||
|
podAntiAffinity:
|
||||||
|
preferredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
- weight: 100
|
||||||
|
podAffinityTerm:
|
||||||
|
labelSelector:
|
||||||
|
matchExpressions:
|
||||||
|
- key: app
|
||||||
|
operator: In
|
||||||
|
values: [rancher]
|
||||||
|
topologyKey: kubernetes.io/hostname
|
||||||
|
nodeAffinity:
|
||||||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
nodeSelectorTerms:
|
||||||
|
- matchExpressions:
|
||||||
|
- key: kubernetes.io/os
|
||||||
|
operator: NotIn
|
||||||
|
values: [windows]
|
||||||
|
tolerations:
|
||||||
|
- key: cattle.io/os
|
||||||
|
value: linux
|
||||||
|
effect: NoSchedule
|
||||||
|
operator: Equal
|
||||||
|
containers:
|
||||||
|
- image: docker.io/rancher/rancher:v2.12.1
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
name: rancher
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
- containerPort: 6666
|
||||||
|
protocol: TCP
|
||||||
|
args:
|
||||||
|
# Public trusted CA - clear ca certs
|
||||||
|
- --no-cacerts
|
||||||
|
- --http-listen-port=80
|
||||||
|
- --https-listen-port=443
|
||||||
|
- --add-local=true
|
||||||
|
env:
|
||||||
|
- name: CATTLE_NAMESPACE
|
||||||
|
value: cattle-system
|
||||||
|
- name: CATTLE_PEER_SERVICE
|
||||||
|
value: rancher
|
||||||
|
- name: CATTLE_BOOTSTRAP_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: bootstrap-secret
|
||||||
|
key: bootstrapPassword
|
||||||
|
- name: IMPERATIVE_API_DIRECT
|
||||||
|
value: 'true'
|
||||||
|
- name: IMPERATIVE_API_APP_SELECTOR
|
||||||
|
value: rancher
|
||||||
|
startupProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /healthz
|
||||||
|
port: 80
|
||||||
|
timeoutSeconds: 5
|
||||||
|
failureThreshold: 12
|
||||||
|
periodSeconds: 10
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /healthz
|
||||||
|
port: 80
|
||||||
|
timeoutSeconds: 5
|
||||||
|
periodSeconds: 30
|
||||||
|
failureThreshold: 5
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /healthz
|
||||||
|
port: 80
|
||||||
|
timeoutSeconds: 5
|
||||||
|
periodSeconds: 30
|
||||||
|
failureThreshold: 5
|
||||||
|
volumeMounts:
|
||||||
|
volumes:
|
||||||
|
---
|
||||||
|
# Source: rancher/templates/ingress.yaml
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: rancher
|
||||||
|
labels:
|
||||||
|
app: rancher
|
||||||
|
chart: rancher-2.12.1
|
||||||
|
heritage: Helm
|
||||||
|
release: rancher
|
||||||
|
annotations:
|
||||||
|
nginx.ingress.kubernetes.io/proxy-connect-timeout: '30'
|
||||||
|
nginx.ingress.kubernetes.io/proxy-read-timeout: '1800'
|
||||||
|
nginx.ingress.kubernetes.io/proxy-send-timeout: '1800'
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: rancher.main.unkin.net # hostname to access rancher server
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- backend:
|
||||||
|
service:
|
||||||
|
name: rancher
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
path: /
|
||||||
|
tls:
|
||||||
|
- hosts: [rancher.main.unkin.net]
|
||||||
|
secretName: tls-rancher-ingress
|
||||||
|
---
|
||||||
|
# Source: rancher/templates/post-delete-hook-service-account.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: rancher-post-delete
|
||||||
|
namespace: cattle-system
|
||||||
|
labels:
|
||||||
|
app: rancher
|
||||||
|
chart: rancher-2.12.1
|
||||||
|
heritage: Helm
|
||||||
|
release: rancher
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: post-delete
|
||||||
|
helm.sh/hook-weight: '1'
|
||||||
|
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded,hook-failed
|
||||||
|
---
|
||||||
|
# Source: rancher/templates/pre-upgrade-hook-service-account.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: rancher-pre-upgrade
|
||||||
|
namespace: cattle-system
|
||||||
|
labels:
|
||||||
|
app: rancher
|
||||||
|
chart: rancher-2.12.1
|
||||||
|
heritage: Helm
|
||||||
|
release: rancher
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: pre-upgrade
|
||||||
|
helm.sh/hook-weight: '-1'
|
||||||
|
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
|
||||||
|
---
|
||||||
|
# Source: rancher/templates/secret.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: bootstrap-secret
|
||||||
|
namespace: cattle-system
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: pre-install,pre-upgrade
|
||||||
|
helm.sh/hook-weight: '-5'
|
||||||
|
helm.sh/resource-policy: keep
|
||||||
|
type: Opaque
|
||||||
|
data:
|
||||||
|
bootstrapPassword: YWRtaW4=
|
||||||
|
---
|
||||||
|
# Source: rancher/templates/post-delete-hook-config-map.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: rancher-post-delete
|
||||||
|
namespace: cattle-system
|
||||||
|
labels:
|
||||||
|
app: rancher
|
||||||
|
chart: rancher-2.12.1
|
||||||
|
heritage: Helm
|
||||||
|
release: rancher
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: post-delete
|
||||||
|
helm.sh/hook-weight: '1'
|
||||||
|
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded,hook-failed
|
||||||
|
data:
|
||||||
|
post-delete-hook.sh: |-
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
namespaces="${NAMESPACES}"
|
||||||
|
rancher_namespace="${RANCHER_NAMESPACE}"
|
||||||
|
timeout="${TIMEOUT}"
|
||||||
|
ignoreTimeoutError="${IGNORETIMEOUTERROR}"
|
||||||
|
if [[ -z ${namespaces} ]]; then
|
||||||
|
echo "No namespace is provided."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ -z ${rancher_namespace} ]]; then
|
||||||
|
echo "No rancher namespace is provided."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ -z ${timeout} ]]; then
|
||||||
|
echo "No timeout value is provided."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ -z ${ignoreTimeoutError} ]]; then
|
||||||
|
echo "No ignoreTimeoutError value is provided."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
succeeded=()
|
||||||
|
failed=()
|
||||||
|
get_pod_count() {
|
||||||
|
kubectl get pods --selector app="${1}" -n "${2}" -o json | jq '.items | length'
|
||||||
|
}
|
||||||
|
echo "Uninstalling Rancher resources in the following namespaces: ${namespaces}"
|
||||||
|
for namespace in ${namespaces}; do
|
||||||
|
for app in $(helm list -n "${namespace}" -q); do
|
||||||
|
if [[ ${app} =~ .crd$ ]]; then
|
||||||
|
echo "--- Skip the app [${app}] in the namespace [${namespace}]"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
echo "--- Deleting the app [${app}] in the namespace [${namespace}]"
|
||||||
|
if [[ ! $(helm uninstall "${app}" -n "${namespace}") ]]; then
|
||||||
|
failed=("${failed[@]}" "${app}")
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
t=0
|
||||||
|
while true; do
|
||||||
|
if [[ $(get_pod_count "${app}" "${namespace}") -eq 0 ]]; then
|
||||||
|
echo "successfully uninstalled [${app}] in the namespace [${namespace}]"
|
||||||
|
succeeded=("${succeeded[@]}" "${app}")
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [[ ${t} -ge ${timeout} ]]; then
|
||||||
|
echo "timeout uninstalling [${app}] in the namespace [${namespace}]"
|
||||||
|
failed=("${failed[@]}" "${app}")
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
# by default, wait 120 seconds in total for an app to be uninstalled
|
||||||
|
echo "waiting 5 seconds for pods of [${app}] to be terminated ..."
|
||||||
|
sleep 5
|
||||||
|
t=$((t + 5))
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
# delete the helm operator pods
|
||||||
|
for pod in $(kubectl get pods -n "${namespace}" -o name); do
|
||||||
|
if [[ ${pod} =~ ^pod\/helm-operation-* ]]; then
|
||||||
|
echo "--- Deleting the pod [${pod}] in the namespace [${namespace}]"
|
||||||
|
kubectl delete "${pod}" -n "${namespace}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
echo "Removing Rancher bootstrap secret in the following namespace: ${rancher_namespace}"
|
||||||
|
kubectl --ignore-not-found=true delete secret bootstrap-secret -n "${rancher_namespace}"
|
||||||
|
echo "------ Summary ------"
|
||||||
|
if [[ ${#succeeded[@]} -ne 0 ]]; then
|
||||||
|
echo "Succeeded to uninstall the following apps:" "${succeeded[@]}"
|
||||||
|
fi
|
||||||
|
if [[ ${#failed[@]} -ne 0 ]]; then
|
||||||
|
echo "Failed to uninstall the following apps:" "${failed[@]}"
|
||||||
|
if [[ "${ignoreTimeoutError}" == "false" ]]; then
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Cleanup finished successfully."
|
||||||
|
fi
|
||||||
|
---
|
||||||
|
# Source: rancher/templates/pre-upgrade-hook-config-map.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: rancher-pre-upgrade
|
||||||
|
namespace: cattle-system
|
||||||
|
labels:
|
||||||
|
app: rancher
|
||||||
|
chart: rancher-2.12.1
|
||||||
|
heritage: Helm
|
||||||
|
release: rancher
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: pre-upgrade
|
||||||
|
helm.sh/hook-weight: '-1'
|
||||||
|
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
|
||||||
|
data:
|
||||||
|
pre-upgrade-hook.sh: |-
|
||||||
|
#!/bin/bash
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
# Global counters
|
||||||
|
declare -A COUNTS
|
||||||
|
RESOURCES_FOUND=false
|
||||||
|
check_prerequisites() {
|
||||||
|
if ! command -v kubectl &>/dev/null; then
|
||||||
|
echo "Missing required tool: kubectl"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
print_resource_table() {
|
||||||
|
local kind="$1"
|
||||||
|
local items="$2"
|
||||||
|
local -a headers=("${@:3}")
|
||||||
|
local count
|
||||||
|
count=$(wc -l <<< "$items")
|
||||||
|
COUNTS["$kind"]=$count
|
||||||
|
RESOURCES_FOUND=true
|
||||||
|
echo "Found $count $kind resource(s):"
|
||||||
|
echo
|
||||||
|
IFS=$'\n' read -r -d '' -a lines < <(printf '%s\0' "$items")
|
||||||
|
|
||||||
|
# Initialize max_lengths array with header lengths
|
||||||
|
local -a max_lengths
|
||||||
|
for i in "${!headers[@]}"; do
|
||||||
|
max_lengths[i]=${#headers[i]}
|
||||||
|
done
|
||||||
|
|
||||||
|
# Calculate max width for each column
|
||||||
|
for line in "${lines[@]}"; do
|
||||||
|
IFS=$'\t' read -r -a cols <<< "$line"
|
||||||
|
for i in "${!cols[@]}"; do
|
||||||
|
(( ${#cols[i]} > max_lengths[i] )) && max_lengths[i]=${#cols[i]}
|
||||||
|
done
|
||||||
|
done
|
||||||
|
for i in "${!headers[@]}"; do
|
||||||
|
printf "%-${max_lengths[i]}s " "${headers[i]}"
|
||||||
|
done
|
||||||
|
printf "\n"
|
||||||
|
for i in "${!headers[@]}"; do
|
||||||
|
printf "%-${max_lengths[i]}s " "$(printf '%*s' "${max_lengths[i]}" '' | tr ' ' '-')"
|
||||||
|
done
|
||||||
|
printf "\n"
|
||||||
|
for line in "${lines[@]}"; do
|
||||||
|
IFS=$'\t' read -r -a cols <<< "$line"
|
||||||
|
for i in "${!cols[@]}"; do
|
||||||
|
printf "%-${max_lengths[i]}s " "${cols[i]}"
|
||||||
|
done
|
||||||
|
printf "\n"
|
||||||
|
done
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
detect_resource() {
|
||||||
|
local crd="$1"
|
||||||
|
local kind="$2"
|
||||||
|
local jsonpath="$3"
|
||||||
|
local -a headers=("${@:4}")
|
||||||
|
echo "Checking for $kind resources..."
|
||||||
|
local output
|
||||||
|
if ! output=$(kubectl get "$crd" --all-namespaces -o=jsonpath="$jsonpath" 2>&1); then
|
||||||
|
if grep -q "the server doesn't have a resource type" <<< "$output"; then
|
||||||
|
echo "Resource type $crd not found. Skipping."
|
||||||
|
echo
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo "Error retrieving $kind resources: $output"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -z "$output" ]; then
|
||||||
|
echo "No $kind resources found."
|
||||||
|
echo
|
||||||
|
else
|
||||||
|
print_resource_table "$kind" "$output" "${headers[@]}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
print_summary() {
|
||||||
|
echo "===== SUMMARY ====="
|
||||||
|
local total=0
|
||||||
|
for kind in "${!COUNTS[@]}"; do
|
||||||
|
local count=${COUNTS[$kind]}
|
||||||
|
echo "$kind: $count"
|
||||||
|
total=$((total + count))
|
||||||
|
done
|
||||||
|
echo "Total resources detected: $total"
|
||||||
|
if [ "$RESOURCES_FOUND" = true ]; then
|
||||||
|
echo "Error: Rancher v2.12+ does not support RKE1.
|
||||||
|
Detected RKE1-related resources (listed above).
|
||||||
|
Please migrate these clusters to RKE2 or K3s, or delete the related resources.
|
||||||
|
More info: https://www.suse.com/c/rke-end-of-life-by-july-2025-replatform-to-rke2-or-k3s"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "No RKE related resources found."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
main() {
|
||||||
|
check_prerequisites
|
||||||
|
detect_resource "clusters.management.cattle.io" "RKE Management Cluster" \
|
||||||
|
'{range .items[?(@.spec.rancherKubernetesEngineConfig)]}{.metadata.name}{"\t"}{.spec.displayName}{"\n"}{end}' \
|
||||||
|
"NAME" "DISPLAY NAME"
|
||||||
|
detect_resource "nodetemplates.management.cattle.io" "NodeTemplate" \
|
||||||
|
'{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\t"}{.spec.displayName}{"\n"}{end}' \
|
||||||
|
"NAMESPACE" "NAME" "DISPLAY NAME"
|
||||||
|
detect_resource "clustertemplates.management.cattle.io" "ClusterTemplate" \
|
||||||
|
'{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\t"}{.spec.displayName}{"\n"}{end}' \
|
||||||
|
"NAMESPACE" "NAME" "DISPLAY NAME"
|
||||||
|
print_summary
|
||||||
|
}
|
||||||
|
main
|
||||||
|
---
|
||||||
|
# Source: rancher/templates/post-delete-hook-cluster-role.yaml
|
||||||
|
kind: ClusterRole
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: rancher-post-delete
|
||||||
|
labels:
|
||||||
|
app: rancher
|
||||||
|
chart: rancher-2.12.1
|
||||||
|
heritage: Helm
|
||||||
|
release: rancher
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: post-delete
|
||||||
|
helm.sh/hook-weight: '1'
|
||||||
|
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded,hook-failed
|
||||||
|
rules:
|
||||||
|
- apiGroups: [extensions, apps]
|
||||||
|
resources: [deployments]
|
||||||
|
verbs: [get, list, delete]
|
||||||
|
- apiGroups: [batch]
|
||||||
|
resources: [jobs]
|
||||||
|
verbs: [get, list, watch, delete, create]
|
||||||
|
- apiGroups: [rbac.authorization.k8s.io]
|
||||||
|
resources: [clusterroles, clusterrolebindings, roles, rolebindings]
|
||||||
|
verbs: [get, list, delete, create]
|
||||||
|
- apiGroups: ['']
|
||||||
|
resources: [pods, secrets, services, configmaps]
|
||||||
|
verbs: [get, list, delete]
|
||||||
|
- apiGroups: ['']
|
||||||
|
resources: [serviceaccounts]
|
||||||
|
verbs: [get, list, delete, create]
|
||||||
|
- apiGroups: [networking.k8s.io]
|
||||||
|
resources: [networkpolicies]
|
||||||
|
verbs: [get, list, delete]
|
||||||
|
- apiGroups: [admissionregistration.k8s.io]
|
||||||
|
resources:
|
||||||
|
- validatingwebhookconfigurations
|
||||||
|
- mutatingwebhookconfigurations
|
||||||
|
verbs: [get, list, delete]
|
||||||
|
- apiGroups: [networking.k8s.io]
|
||||||
|
resources: [ingresses]
|
||||||
|
verbs: [delete]
|
||||||
|
- apiGroups: [cert-manager.io]
|
||||||
|
resources: [issuers]
|
||||||
|
verbs: [delete]
|
||||||
|
---
|
||||||
|
# Source: rancher/templates/pre-upgrade-hook-cluster-role.yaml
|
||||||
|
kind: ClusterRole
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: rancher-pre-upgrade
|
||||||
|
labels:
|
||||||
|
app: rancher
|
||||||
|
chart: rancher-2.12.1
|
||||||
|
heritage: Helm
|
||||||
|
release: rancher
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: pre-upgrade
|
||||||
|
helm.sh/hook-weight: '-1'
|
||||||
|
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
|
||||||
|
rules:
|
||||||
|
- apiGroups: [management.cattle.io]
|
||||||
|
resources: [clusters, nodetemplates, clustertemplates]
|
||||||
|
verbs: [get, list]
|
||||||
|
---
|
||||||
|
# Source: rancher/templates/post-delete-hook-cluster-role-binding.yaml
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
name: rancher-post-delete
|
||||||
|
labels:
|
||||||
|
app: rancher
|
||||||
|
chart: rancher-2.12.1
|
||||||
|
heritage: Helm
|
||||||
|
release: rancher
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: post-delete
|
||||||
|
helm.sh/hook-weight: '2'
|
||||||
|
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded,hook-failed
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: rancher-post-delete
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: rancher-post-delete
|
||||||
|
namespace: cattle-system
|
||||||
|
---
|
||||||
|
# Source: rancher/templates/pre-upgrade-hook-cluster-role-binding.yaml
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
name: rancher-pre-upgrade
|
||||||
|
labels:
|
||||||
|
app: rancher
|
||||||
|
chart: rancher-2.12.1
|
||||||
|
heritage: Helm
|
||||||
|
release: rancher
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: pre-upgrade
|
||||||
|
helm.sh/hook-weight: '-1'
|
||||||
|
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: rancher-pre-upgrade
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: rancher-pre-upgrade
|
||||||
|
namespace: cattle-system
|
||||||
|
---
|
||||||
|
# Source: rancher/templates/post-delete-hook-job.yaml
|
||||||
|
apiVersion: batch/v1
|
||||||
|
kind: Job
|
||||||
|
metadata:
|
||||||
|
name: rancher-post-delete
|
||||||
|
namespace: cattle-system
|
||||||
|
labels:
|
||||||
|
app: rancher
|
||||||
|
chart: rancher-2.12.1
|
||||||
|
heritage: Helm
|
||||||
|
release: rancher
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: post-delete
|
||||||
|
helm.sh/hook-weight: '3'
|
||||||
|
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
|
||||||
|
spec:
|
||||||
|
backoffLimit: 3
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
name: rancher-post-delete
|
||||||
|
labels:
|
||||||
|
app: rancher
|
||||||
|
chart: rancher-2.12.1
|
||||||
|
heritage: Helm
|
||||||
|
release: rancher
|
||||||
|
spec:
|
||||||
|
serviceAccountName: rancher-post-delete
|
||||||
|
restartPolicy: OnFailure
|
||||||
|
containers:
|
||||||
|
- name: rancher-post-delete
|
||||||
|
image: rancher/shell:v0.5.0
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
securityContext:
|
||||||
|
runAsUser: 0
|
||||||
|
command: [/scripts/post-delete-hook.sh]
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /scripts
|
||||||
|
name: config-volume
|
||||||
|
env:
|
||||||
|
- name: NAMESPACES
|
||||||
|
value: cattle-fleet-system cattle-system rancher-operator-system
|
||||||
|
- name: RANCHER_NAMESPACE
|
||||||
|
value: cattle-system
|
||||||
|
- name: TIMEOUT
|
||||||
|
value: '120'
|
||||||
|
- name: IGNORETIMEOUTERROR
|
||||||
|
value: 'false'
|
||||||
|
volumes:
|
||||||
|
- name: config-volume
|
||||||
|
configMap:
|
||||||
|
name: rancher-post-delete
|
||||||
|
defaultMode: 0777
|
||||||
|
---
|
||||||
|
# Source: rancher/templates/pre-upgrade-hook-job.yaml
|
||||||
|
apiVersion: batch/v1
|
||||||
|
kind: Job
|
||||||
|
metadata:
|
||||||
|
name: rancher-pre-upgrade
|
||||||
|
namespace: cattle-system
|
||||||
|
labels:
|
||||||
|
app: rancher-pre-upgrade
|
||||||
|
chart: rancher-2.12.1
|
||||||
|
heritage: Helm
|
||||||
|
release: rancher
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: pre-upgrade
|
||||||
|
helm.sh/hook-weight: '-1'
|
||||||
|
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
|
||||||
|
spec:
|
||||||
|
backoffLimit: 3
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
name: rancher-pre-upgrade
|
||||||
|
labels:
|
||||||
|
app: rancher-pre-upgrade
|
||||||
|
chart: rancher-2.12.1
|
||||||
|
heritage: Helm
|
||||||
|
release: rancher
|
||||||
|
spec:
|
||||||
|
serviceAccountName: rancher-pre-upgrade
|
||||||
|
restartPolicy: Never
|
||||||
|
containers:
|
||||||
|
- name: rancher-pre-upgrade
|
||||||
|
image: rancher/shell:v0.5.0
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
securityContext:
|
||||||
|
runAsUser: 0
|
||||||
|
command: [/scripts/pre-upgrade-hook.sh]
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /scripts
|
||||||
|
name: config-volume
|
||||||
|
volumes:
|
||||||
|
- name: config-volume
|
||||||
|
configMap:
|
||||||
|
name: rancher-pre-upgrade
|
||||||
|
defaultMode: 0777
|
||||||
@ -1,4 +1,3 @@
|
|||||||
---
|
|
||||||
apiVersion: helm.cattle.io/v1
|
apiVersion: helm.cattle.io/v1
|
||||||
kind: HelmChartConfig
|
kind: HelmChartConfig
|
||||||
metadata:
|
metadata:
|
||||||
45
modules/rke2/files/100_purelb_config.yaml
Normal file
45
modules/rke2/files/100_purelb_config.yaml
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
apiVersion: purelb.io/v1
|
||||||
|
kind: LBNodeAgent
|
||||||
|
metadata:
|
||||||
|
name: common
|
||||||
|
namespace: purelb
|
||||||
|
spec:
|
||||||
|
local:
|
||||||
|
extlbint: kube-lb0
|
||||||
|
localint: default
|
||||||
|
sendgarp: false
|
||||||
|
---
|
||||||
|
apiVersion: purelb.io/v1
|
||||||
|
kind: LBNodeAgent
|
||||||
|
metadata:
|
||||||
|
name: dmz
|
||||||
|
namespace: purelb
|
||||||
|
spec:
|
||||||
|
local:
|
||||||
|
extlbint: kube-lb0
|
||||||
|
localint: default
|
||||||
|
sendgarp: false
|
||||||
|
---
|
||||||
|
apiVersion: purelb.io/v1
|
||||||
|
kind: ServiceGroup
|
||||||
|
metadata:
|
||||||
|
name: dmz
|
||||||
|
namespace: purelb
|
||||||
|
spec:
|
||||||
|
local:
|
||||||
|
v4pools:
|
||||||
|
- subnet: 198.18.199.0/24
|
||||||
|
pool: 198.18.199.0/24
|
||||||
|
aggregation: /32
|
||||||
|
---
|
||||||
|
apiVersion: purelb.io/v1
|
||||||
|
kind: ServiceGroup
|
||||||
|
metadata:
|
||||||
|
name: common
|
||||||
|
namespace: purelb
|
||||||
|
spec:
|
||||||
|
local:
|
||||||
|
v4pools:
|
||||||
|
- subnet: 198.18.200.0/24
|
||||||
|
pool: 198.18.200.0/24
|
||||||
|
aggregation: /32
|
||||||
41
modules/rke2/files/200_ingres_lb_nginx.yaml
Normal file
41
modules/rke2/files/200_ingres_lb_nginx.yaml
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: rke2-ingress-nginx-controller
|
||||||
|
namespace: kube-system
|
||||||
|
annotations:
|
||||||
|
purelb.io/service-group: common
|
||||||
|
spec:
|
||||||
|
type: LoadBalancer
|
||||||
|
externalTrafficPolicy: Cluster
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 80
|
||||||
|
targetPort: http
|
||||||
|
protocol: TCP
|
||||||
|
- name: https
|
||||||
|
port: 443
|
||||||
|
targetPort: https
|
||||||
|
protocol: TCP
|
||||||
|
selector:
|
||||||
|
app.kubernetes.io/name: ingress-nginx
|
||||||
|
app.kubernetes.io/component: controller
|
||||||
|
app.kubernetes.io/instance: rke2-ingress-nginx
|
||||||
|
loadBalancerIP: 198.18.200.0
|
||||||
|
---
|
||||||
|
apiVersion: helm.cattle.io/v1
|
||||||
|
kind: HelmChartConfig
|
||||||
|
metadata:
|
||||||
|
name: rke2-ingress-nginx
|
||||||
|
namespace: kube-system
|
||||||
|
spec:
|
||||||
|
valuesContent: |-
|
||||||
|
controller:
|
||||||
|
hostPort:
|
||||||
|
enabled: false
|
||||||
|
service:
|
||||||
|
enabled: true
|
||||||
|
type: LoadBalancer
|
||||||
|
externalTrafficPolicy: Local
|
||||||
|
annotations:
|
||||||
|
purelb.io/service-group: common
|
||||||
22
modules/rke2/files/201_ingres_route_rancher.yaml
Normal file
22
modules/rke2/files/201_ingres_route_rancher.yaml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: rancher
|
||||||
|
namespace: cattle-system
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/ingress.class: nginx
|
||||||
|
spec:
|
||||||
|
tls:
|
||||||
|
- hosts: [rancher.main.unkin.net]
|
||||||
|
secretName: tls-rancher
|
||||||
|
rules:
|
||||||
|
- host: rancher.main.unkin.net
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: rancher
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
Loading…
Reference in New Issue
Block a user