====== TeamPass ====== $ kubectl create ns teampass-system namespace/teampass-system created ===== Database ===== --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-db-teampass namespace: teampass-system spec: accessModes: - ReadWriteOnce storageClassName: nfs-client resources: requests: storage: 4Gi $ kubectl apply -f teampass-db-claim.yaml persistentvolumeclaim/teampass-db created $ echo -n "@btjt(())22" | base64 QGJ0anQoKCkpMjI= --- apiVersion: v1 kind: Secret metadata: name: db-secrets namespace: teampass-system data: MYSQL_PASSWORD: QGJ0anQoKCkpMjI= MYSQL_ROOT_PASSWORD: QGJ0anQoKCkpMjI= $ kubectl apply -f db-secrets.yaml secret/db-secrets created --- apiVersion: apps/v1 kind: Deployment metadata: labels: app: db-teampass name: db-teampass namespace: teampass-system spec: replicas: 1 selector: matchLabels: app: db-teampass strategy: {} template: metadata: labels: app: db-teampass spec: securityContext: fsGroup: 1001 runAsUser: 1001 containers: - env: - name: MYSQL_DATABASE value: teampass - name: MYSQL_PASSWORD valueFrom: secretKeyRef: name: db-secrets key: MYSQL_PASSWORD - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: db-secrets key: MYSQL_ROOT_PASSWORD - name: MYSQL_USER value: teampass image: mariadb:latest imagePullPolicy: IfNotPresent name: db-teampass resources: {} volumeMounts: - mountPath: /var/lib/mysql name: db-teampass volumes: - name: db-teampass persistentVolumeClaim: claimName: nfs-db-teampass $ kubectl apply -f db-deployment.yaml deployment.apps/db-teampass created apiVersion: v1 kind: Service metadata: creationTimestamp: null labels: app: db-teampass name: db-teampass namespace: teampass-system spec: ports: - name: "3306" port: 3306 targetPort: 3306 selector: app: db-teampass status: loadBalancer: {} $ kubectl apply -f db-service.yaml service/db-teampass created ===== App ===== apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-teampass-html namespace: teampass-system spec: accessModes: - ReadWriteOnce storageClassName: nfs-client resources: requests: storage: 1Gi $ kubectl apply -f teampass-html-claim.yaml persistentvolumeclaim/nfs-teampass-html created --- apiVersion: apps/v1 kind: Deployment metadata: labels: app: teampass name: teampass namespace: teampass-system spec: replicas: 1 selector: matchLabels: app: teampass strategy: {} template: metadata: labels: app: teampass spec: containers: - image: teampass/teampass name: teampass ports: - containerPort: 80 volumeMounts: - mountPath: /var/www/html name: teampass-html volumes: - name: teampass-html persistentVolumeClaim: claimName: nfs-teampass-html $ kubectl apply -f teampass-deployment.yaml deployment.apps/teampass created $ kubectl expose deploy teampass --port=80 --target-port=80 --type="NodePort" -n teampass-system service/teampass exposed $ kubectl get all -n teampass-system -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod/db-teampass-6bf4596bc-tc6cs 1/1 Running 0 26m 10.244.213.140 kube-worker-02.juntotelecom.com.br pod/teampass-78d4fcd499-rd2qt 1/1 Running 0 6m40s 10.244.213.141 kube-worker-02.juntotelecom.com.br NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR service/db-teampass ClusterIP 10.96.140.199 3306/TCP 21m app=db-teampass service/teampass NodePort 10.96.77.101 80:31932/TCP 4s app=teampass NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR deployment.apps/db-teampass 1/1 1 1 26m db-teampass mariadb:latest app=db-teampass deployment.apps/teampass 1/1 1 1 6m40s teampass teampass/teampass app=teampass NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR replicaset.apps/db-teampass-6bf4596bc 1 1 1 26m db-teampass mariadb:latest app=db-teampass,pod-template-hash=6bf4596bc replicaset.apps/teampass-78d4fcd499 1 1 1 6m40s teampass teampass/teampass app=teampass,pod-template-hash=78d4fcd499