chore: add current provisioning state before migration

This commit is contained in:
Jesús Pérez 2025-09-22 23:11:41 +01:00
parent a9703b4748
commit 50745b0f22
660 changed files with 88126 additions and 0 deletions

View file

@ -0,0 +1,113 @@
apiVersion: v1
kind: Namespace
metadata:
name: nfs-provisioner
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-client
parameters:
archiveOnDelete: "false"
provisioner: k8s-sigs.io/nfs-subdir-external-provisioner
reclaimPolicy: Retain
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: nfs-client-provisioner
namespace: nfs-provisioner
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: leader-locking-nfs-client-provisioner
namespace: nfs-provisioner
rules:
- apiGroups:
- ""
resources:
- endpoints
verbs:
- get
- list
- watch
- create
- update
- patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: nfs-client-provisioner-runner
rules:
- apiGroups:
- ""
resources:
- nodes
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- persistentvolumes
verbs:
- get
- list
- watch
- create
- delete
- apiGroups:
- ""
resources:
- persistentvolumeclaims
verbs:
- get
- list
- watch
- update
- apiGroups:
- storage.k8s.io
resources:
- storageclasses
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- events
verbs:
- create
- update
- patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: leader-locking-nfs-client-provisioner
namespace: nfs-provisioner
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: leader-locking-nfs-client-provisioner
subjects:
- kind: ServiceAccount
name: nfs-client-provisioner
namespace: nfs-provisioner
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: run-nfs-client-provisioner
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: nfs-client-provisioner-runner
subjects:
- kind: ServiceAccount
name: nfs-client-provisioner
namespace: nfs-provisioner

View file

@ -0,0 +1,47 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nfs-client-provisioner
name: nfs-client-provisioner
namespace: nfs-provisioner
spec:
replicas: 1
selector:
matchLabels:
app: nfs-client-provisioner
strategy:
type: Recreate
template:
metadata:
labels:
app: nfs-client-provisioner
spec:
containers:
- env:
- name: NFS_SERVER
{%- if taskserv.ip == "$network_private_ip" %}
value: "{{server.network_private_ip}}"
{%- else -%}
value: "{{server.tasks[task_pos].ip}}"
{%- endif %}
- name: NFS_PATH
value: {{taskserv.shared}}
- name: PROVISIONER_NAME
value: k8s-sigs.io/nfs-subdir-external-provisioner
image: registry.k8s.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2
name: nfs-client-provisioner
volumeMounts:
- mountPath: /persistentvolumes
name: nfs-client-root
serviceAccountName: nfs-client-provisioner
volumes:
- name: nfs-client-root
nfs:
path: {{taskserv.shared}}
{%- if taskserv.ip == "$network_private_ip" %}
server: "{{server.network_private_ip}}"
{%- else -%}
server: "{{server.tasks[task_pos].ip}}"
{%- endif %}

View file

@ -0,0 +1,15 @@
{%- if taskserv.ip == "$network_private_ip" %}
NFS_IP="{{server.network_private_ip}}"
{%- else %}
NFS_IP="{{taskserv.ip}}"
{%- endif %}
NFS_SHARE_PATH="{{taskserv.shared}}"
{%- if taskserv.net == "$priv_cidr_block" %}
{%- if "server.priv_cidr_block" %}
NFS_NET="{{server.priv_cidr_block}}"
{%- else %}
NFS_NET="{{server.priv_cidr_block}}"
{%- endif %}
{%- else %}
NFS_NET="{{taskserv.net}}"
{%- endif %}

View file

@ -0,0 +1,5 @@
{%- if taskserv.net == "$priv_cidr_block" %}
{{taskserv.shared}} {{server.priv_cidr_block}}(rw,sync,no_subtree_check,no_root_squash)
{%- else %}
{{taskserv.shared}} {{taskserv.net}}(rw,sync,no_subtree_check,no_root_squash)
{%- endif %}

View file

@ -0,0 +1,45 @@
#!/bin/bash
# Info: Script to install nfs packages
# Author: JesusPerezLorenzo
# Release: 1.1
# Date: 8-07-2024
USAGE="install.sh "
[ "$1" == "-h" ] && echo "$USAGE" && exit 1
_add_nfs_server() {
chmod 1777 /tmp
echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections
DEBIAN_FRONTEND=noninteractive sudo apt-get -y -qq install sudo nfs-server
}
# Update and add packages to installation
[ -z "$(type -P exporfs)" ] && _add_nfs_server
[ -r "env-external-nfs" ] && . env-external-nfs
WORK_PATH=${WORK_PATH:-/tmp}
if [ -z "$NFS_IP" ] || [ -z "$NFS_NET" ] || [ -z "$NFS_SHARE_PATH" ] ; then
echo "Error: IP NET SHARE_PATH not all set for NFS"
exit 1
fi
[ ! -d "$NFS_SHARE_PATH" ] && mkdir -p "$NFS_SHARE_PATH" && chmod 777 "$NFS_SHARE_PATH"
if ! grep -q "$NFS_NET" /etc/exports ; then
[ -r "exports" ] && cat exports | sudo tee -a /etc/exports && exportfs -a
fi
if [ -r "/etc/kubernetes/manifests/kube-apiserver.yaml" ] ; then
has_kubectl=$(type -P kubectl 2>/dev/null)
[ -z "$has_kubectl" ] && echo "kubectl command not found" && exit 0
if kubectl apply -f core-nfs.yaml && kubectl apply -f storage-class.yaml ; then
[ -r "deploy-external-nfs.yaml" ] && kubectl apply -f deploy-external-nfs.yaml
[ "$WORK_PATH" != "/tmp" ] && {
sudo mkdir -p "$WORK_PATH/external-nfs"
sudo mv core-nfs.yaml stroge-class.yaml deploy-external-nfs.yaml "$WORK_PATH/external-nfs"
}
exit 0
else
echo "Error kubectl install errors " && exit 1
fi
fi

View file

@ -0,0 +1,8 @@
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-client
parameters:
archiveOnDelete: "false"
provisioner: k8s-sigs.io/nfs-subdir-external-provisioner
reclaimPolicy: Retain