User Tools

Site Tools


wikiv3:phpipam_kubernetes_deploy

PHPipam

$ ssh kube-worker-01
$ sudo mkdir /volumes/kubernetes/phpipam
$ sudo chmod 777 /volumes/kubernetes/phpipam
$ kubectl create namespace phpipam
namespace/phpipam created
storage-class-phpipam.yaml
---
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
persistentvolumes.yaml
---
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=
mysql-deployment.yaml
---
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
ipam-deployment.yaml
---
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
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   <none>        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   <none>           <none>
pod/mysql-7d9788589b-tlkk8   1/1     Running   0          54m   192.168.101.68    kube-worker-01.juntotelecom.com.br   <none>           <none>
 
NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE   SELECTOR
service/ipam    NodePort    10.97.49.198    <none>        80:31899/TCP   35m   app=ipam
service/mysql   ClusterIP   10.110.145.45   <none>        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
wikiv3/phpipam_kubernetes_deploy.txt · Last modified: by 127.0.0.1