====== Dokuwiki ======
$ kubectl create namespace dokuwiki-system
namespace/dokuwiki-system created
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: nfs-claim-dokuwiki
namespace: dokuwiki-system
spec:
accessModes:
- ReadWriteOnce
storageClassName: nfs-client
resources:
requests:
storage: 4Gi
$ kubectl apply -f claim-dokuwiki-nfs.yaml
persistentvolumeclaim/nfs-claim-dokuwiki created
$ kubectl get pv,pvc -n dokuwiki-system
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
persistentvolume/pvc-a6b52e3c-bec6-4b20-9c07-3d4afe262807 4Gi RWO Delete Bound dokuwiki-system/nfs-claim-dokuwiki nfs-client 34s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/nfs-claim-dokuwiki Bound pvc-a6b52e3c-bec6-4b20-9c07-3d4afe262807 4Gi RWO nfs-client 34s
$ kubectl describe pv pvc-a6b52e3c-bec6-4b20-9c07-3d4afe262807 -n dokuwiki-system
Name: pvc-a6b52e3c-bec6-4b20-9c07-3d4afe262807
Labels:
Annotations: pv.kubernetes.io/provisioned-by: k8s-sigs.io/nfs-subdir-external-provisioner
Finalizers: [kubernetes.io/pv-protection]
StorageClass: nfs-client
Status: Bound
Claim: dokuwiki-system/nfs-claim-dokuwiki
Reclaim Policy: Delete
Access Modes: RWO
VolumeMode: Filesystem
Capacity: 4Gi
Node Affinity:
Message:
Source:
Type: NFS (an NFS mount that lasts the lifetime of a pod)
Server: 177.75.176.43
Path: /nfs/kubedata/dokuwiki-system-nfs-claim-dokuwiki-pvc-a6b52e3c-bec6-4b20-9c07-3d4afe262807
ReadOnly: false
Events:
$ kubectl describe pvc nfs-claim-dokuwiki -n dokuwiki-system
Name: nfs-claim-dokuwiki
Namespace: dokuwiki-system
StorageClass: nfs-client
Status: Bound
Volume: pvc-a6b52e3c-bec6-4b20-9c07-3d4afe262807
Labels:
Annotations: pv.kubernetes.io/bind-completed: yes
pv.kubernetes.io/bound-by-controller: yes
volume.beta.kubernetes.io/storage-provisioner: k8s-sigs.io/nfs-subdir-external-provisioner
volume.kubernetes.io/storage-provisioner: k8s-sigs.io/nfs-subdir-external-provisioner
Finalizers: [kubernetes.io/pvc-protection]
Capacity: 4Gi
Access Modes: RWO
VolumeMode: Filesystem
Used By:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ExternalProvisioning 2m41s persistentvolume-controller waiting for a volume to be created, either by external provisioner "k8s-sigs.io/nfs-subdir-external-provisioner" or manually created by system administrator
Normal Provisioning 2m41s k8s-sigs.io/nfs-subdir-external-provisioner_nfs-client-provisioner-8686cbd686-dbrgn_d5efe716-aabd-4493-bcb1-225f0584fee0 External provisioner is provisioning volume for claim "dokuwiki-system/nfs-claim-dokuwiki"
Normal ProvisioningSucceeded 2m41s k8s-sigs.io/nfs-subdir-external-provisioner_nfs-client-provisioner-8686cbd686-dbrgn_d5efe716-aabd-4493-bcb1-225f0584fee0 Successfully provisioned volume pvc-a6b52e3c-bec6-4b20-9c07-3d4afe262807
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: dokuwiki
name: dokuwiki
namespace: dokuwiki-system
spec:
replicas: 1
selector:
matchLabels:
app: dokuwiki
strategy: {}
template:
metadata:
labels:
app: dokuwiki
spec:
containers:
- image: docker.io/bitnami/dokuwiki:latest
name: dokuwiki
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
- containerPort: 8443
volumeMounts:
- mountPath: /bitnami/dokuwiki
name: dokuwiki-data
volumes:
- name: dokuwiki-data
persistentVolumeClaim:
claimName: nfs-claim-dokuwiki
$ kubectl apply -f dokuwiki-deployment.yaml
deployment.apps/dokuwiki created
$ kubectl get all -n dokuwiki-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/dokuwiki-65cdd686fb-qfmhb 1/1 Running 0 33s 10.244.213.135 kube-worker-02.juntotelecom.com.br
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
deployment.apps/dokuwiki 1/1 1 1 33s dokuwiki docker.io/bitnami/dokuwiki:latest app=dokuwiki
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
replicaset.apps/dokuwiki-65cdd686fb 1 1 1 33s dokuwiki docker.io/bitnami/dokuwiki:latest app=dokuwiki,pod-template-hash=65cdd686fb
---
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: dokuwiki
name: dokuwiki
namespace: dokuwiki-system
spec:
ipFamilyPolicy: PreferDualStack
ipFamilies:
- IPv4
- IPv6
ports:
- name: "80"
port: 80
targetPort: 8080
- name: "443"
port: 443
targetPort: 8443
selector:
app: dokuwiki
type: NodePort
status:
loadBalancer: {}
$ kubectl apply -f dokuwiki-service.yaml
service/dokuwiki created
$ kubectl get service -n dokuwiki-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dokuwiki NodePort 10.96.241.140 80:31246/TCP,443:31532/TCP 35s
$ kubectl describe service dokuwiki -n dokuwiki-system
Name: dokuwiki
Namespace: dokuwiki-system
Labels: app=dokuwiki
Annotations:
Selector: app=dokuwiki
Type: NodePort
IP Family Policy: PreferDualStack
IP Families: IPv4,IPv6
IP: 10.96.241.140
IPs: 10.96.241.140,fd00:0:0:100::b29d
Port: 80 80/TCP
TargetPort: 8080/TCP
NodePort: 80 31246/TCP
Endpoints: 10.244.213.135:8080
Port: 443 443/TCP
TargetPort: 8443/TCP
NodePort: 443 31532/TCP
Endpoints: 10.244.213.135:8443
Session Affinity: None
External Traffic Policy: Cluster
Events:
$ curl http://127.0.0.1:31246
[...]
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
creationTimestamp: null
name: dokuwiki
namespace: dokuwiki-system
spec:
ingressClassName: nginx
rules:
- host: dokuwiki.juntotelecom.com.br
http:
paths:
- backend:
service:
name: dokuwiki
port:
number: 8080
path: /
pathType: Prefix
status:
loadBalancer: {}
$ kubectl apply -f dokuwiki-ingress.yaml
ingress.networking.k8s.io/dokuwiki created
$ kubectl get ingress -n dokuwiki-system
NAME CLASS HOSTS ADDRESS PORTS AGE
dokuwiki nginx dokuwiki.juntotelecom.com.br 177.75.176.41 80 88s
$ kubectl describe ingress dokuwiki -n dokuwiki-system
Name: dokuwiki
Labels:
Namespace: dokuwiki-system
Address: 177.75.176.41
Ingress Class: nginx
Default backend:
Rules:
Host Path Backends
---- ---- --------
dokuwiki.juntotelecom.com.br
/ dokuwiki:8080 ()
Annotations:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Sync 63s (x2 over 106s) nginx-ingress-controller Scheduled for sync