====== PHPipam ======
$ ssh kube-worker-01
$ sudo mkdir /volumes/kubernetes/phpipam
$ sudo chmod 777 /volumes/kubernetes/phpipam
$ kubectl create namespace phpipam
namespace/phpipam created
---
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: local-storage-phpipam
namespace: phpipam
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
$ kubectl apply -f storage-class-phpipam.yaml
storageclass.storage.k8s.io/local-storage-phpipam created
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv-phpipam
namespace: phpipam
spec:
capacity:
storage: 4Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage-phpipam
local:
path: /volumes/kubernetes/phpipam
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- kube-worker-01.juntotelecom.com.br
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: claim-db-phpipam
namespace: phpipam
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage-phpipam
resources:
requests:
storage: 4Gi
$ kubectl apply -f persistentvolumes.yaml
persistentvolume/mysql-pv-phpipam created
persistentvolumeclaim/claim-db-phpipam created
$ echo -n "@btjt(())22" | openssl enc -base64
QGJ0anQoKCkpMjI=
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: mysql
name: mysql
namespace: phpipam
spec:
replicas: 1
selector:
matchLabels:
app: mysql
strategy: {}
template:
metadata:
labels:
app: mysql
spec:
containers:
- env:
- name: MYSQL_ROOT_PASSWORD
value: QGJ0anQoKCkpMjI=
image: mysql:5.6
imagePullPolicy: IfNotPresent
name: mysql
volumeMounts:
- mountPath: /var/lib/mysql
name: db-phpipam
volumes:
- name: db-phpipam
persistentVolumeClaim:
claimName: claim-db-phpipam
$ kubectl apply -f mysql-deployment.yaml
deployment.apps/mysql created
---
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: ipam
name: ipam
namespace: phpipam
spec:
replicas: 1
selector:
matchLabels:
app: ipam
strategy: {}
template:
metadata:
labels:
app: ipam
spec:
containers:
- env:
- name: MYSQL_ENV_MYSQL_HOST
value: mysql
- name: MYSQL_ENV_MYSQL_ROOT_PASSWORD
value: QGJ0anQoKCkpMjI=
- name: MYSQL_ENV_MYSQL_USER
value: root
image: pierrecdn/phpipam
name: ipam
ports:
- containerPort: 80
$ kubectl apply -f ipam-deployment.yaml
deployment.apps/ipam created
$ kubectl expose deploy ipam --port=80 --target-port=80 --type=NodePort -n phpipam --dry-run=client -o yaml > ipam-service.yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: ipam
name: ipam
namespace: phpipam
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: ipam
type: NodePort
status:
loadBalancer: {}
$ kubectl apply -f ipam-service.yaml
service/ipam created
$ kubectl get all -n phpipam
NAME READY STATUS RESTARTS AGE
pod/ipam-5c747776ff-wzs6w 1/1 Running 0 11m
pod/mysql-7d9788589b-tlkk8 1/1 Running 0 21m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/ipam NodePort 10.97.49.198 80:31899/TCP 2m34s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/ipam 1/1 1 1 11m
deployment.apps/mysql 1/1 1 1 21m
NAME DESIRED CURRENT READY AGE
replicaset.apps/ipam-5c747776ff 1 1 1 11m
replicaset.apps/mysql-7d9788589b 1 1 1 21m
$ kubectl expose deploy mysql --port=3306 --target-port=3306 -n phpipam
$ kubectl get all -n phpipam -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/ipam-5c747776ff-cgnvg 1/1 Running 0 20m 192.168.213.134 kube-worker-02.juntotelecom.com.br
pod/mysql-7d9788589b-tlkk8 1/1 Running 0 54m 192.168.101.68 kube-worker-01.juntotelecom.com.br
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/ipam NodePort 10.97.49.198 80:31899/TCP 35m app=ipam
service/mysql ClusterIP 10.110.145.45 3306/TCP 25m app=mysql
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
deployment.apps/ipam 1/1 1 1 43m ipam pierrecdn/phpipam app=ipam
deployment.apps/mysql 1/1 1 1 54m mysql mysql:5.6 app=mysql
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
replicaset.apps/ipam-5c747776ff 1 1 1 43m ipam pierrecdn/phpipam app=ipam,pod-template-hash=5c747776ff
replicaset.apps/mysql-7d9788589b 1 1 1 54m mysql mysql:5.6 app=mysql,pod-template-hash=7d9788589b