$ ls lab01/ dep-app.yaml dep-mysql.yaml svc-app.yaml svc-mysql.yaml
apiVersion: apps/v1 kind: Deployment metadata: labels: app: app name: app namespace: 4labs spec: replicas: 1 selector: matchLabels: app: app strategy: {} template: metadata: labels: app: app spec: containers: - image: instrutordocker/4linux-app:latest name: app env: - name: DB_HOST value: mysql - name: DB_PORT value: "3306" - name: DB_USER value: php - name: DB_PASS value: 4linux - name: DB_NAME value: php
apiVersion: apps/v1 kind: Deployment metadata: labels: app: mysql name: mysql namespace: 4labs spec: replicas: 1 selector: matchLabels: app: mysql strategy: {} template: metadata: labels: app: mysql spec: containers: - image: mysql:5.7 imagePullPolicy: IfNotPresent name: mysql env: - name: MYSQL_ROOT_PASSWORD value: Abc123! - name: MYSQL_DATABASE value: php - name: MYSQL_USER value: php - name: MYSQL_PASSWORD value: 4linux
apiVersion: v1 kind: Service metadata: labels: app: app name: app namespace: 4labs spec: ports: - nodePort: 31541 port: 8080 protocol: TCP targetPort: 8080 selector: app: app type: NodePort
apiVersion: v1 kind: Service metadata: labels: app: mysql name: mysql namespace: 4labs spec: ports: - port: 3306 protocol: TCP targetPort: 3306 selector: app: mysql
$ kubectl create namespace 4labs
namespace/4labs created
$ kubectl apply -f lab01 deployment.apps/app created deployment.apps/mysql created service/app created service/mysql created
$ kubectl get all -n 4labs NAME READY STATUS RESTARTS AGE pod/app-78dfcc664c-75k9r 0/1 Running 0 84s pod/mysql-cc8b4bdf7-q8blt 1/1 Running 0 84s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/app NodePort 10.99.3.104 <none> 8080:31541/TCP 84s service/mysql ClusterIP 10.99.0.222 <none> 3306/TCP 84s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/app 0/1 1 0 84s deployment.apps/mysql 1/1 1 1 84s NAME DESIRED CURRENT READY AGE replicaset.apps/app-78dfcc664c 1 1 0 84s replicaset.apps/mysql-cc8b4bdf7 1 1 1 84s
URL: http://177.75.176.40:31541
$ kubectl delete -f lab01 deployment.apps "app" deleted deployment.apps "mysql" deleted service "app" deleted service "mysql" deleted
$ cat lab02/configmaps.yaml --- apiVersion: v1 kind: ConfigMap metadata: name: app-configmaps namespace: 4labs data: DB_HOST: mysql DB_NAME: php DB_PORT: "3306" DB_USER: php --- apiVersion: v1 kind: ConfigMap metadata: name: mysql-configmaps namespace: 4labs data: MYSQL_DATABASE: php MYSQL_USER: php
$ kubectl apply -f lab02/configmaps.yaml configmap/app-configmaps created configmap/mysql-configmaps created
$ kubectl get cm -n 4labs NAME DATA AGE app-configmaps 4 31s kube-root-ca.crt 1 28h mysql-configmaps 2 31s
$ cat lab02/secrets.yaml --- apiVersion: v1 kind: Secret metadata: name: app-secrets namespace: 4labs data: DB_PASS: NGxpbnV4 --- apiVersion: v1 kind: Secret metadata: name: mysql-secrets namespace: 4labs data: MYSQL_PASSWORD: NGxpbnV4 MYSQL_ROOT_PASSWORD: QWJjMTIzIQ==
$ echo -n "4linux" | openssl enc -base64 NGxpbnV4
$ kubectl apply -f lab02/secrets.yaml secret/app-secrets created secret/mysql-secrets created
$ kubectl get secrets -n 4labs NAME TYPE DATA AGE app-secrets Opaque 1 28s default-token-7g2cc kubernetes.io/service-account-token 3 28h mysql-secrets Opaque
apiVersion: apps/v1 kind: Deployment metadata: labels: app: app name: app namespace: 4labs spec: replicas: 1 selector: matchLabels: app: app strategy: {} template: metadata: labels: app: app spec: containers: - image: instrutordocker/4linux-app:latest name: app env: - name: DB_HOST valueFrom: configMapKeyRef: name: app-configmaps key: DB_HOST - name: DB_PORT valueFrom: configMapKeyRef: name: app-configmaps key: DB_PORT - name: DB_USER valueFrom: configMapKeyRef: name: app-configmaps key: DB_USER - name: DB_NAME valueFrom: configMapKeyRef: name: app-configmaps key: DB_NAME - name: DB_PASS valueFrom: secretKeyRef: name: app-secrets key: DB_PASS
$ kubectl apply -f lab02/dep-app.yaml deployment.apps/app configured
apiVersion: apps/v1 kind: Deployment metadata: labels: app: mysql name: mysql namespace: 4labs spec: replicas: 1 selector: matchLabels: app: mysql strategy: {} template: metadata: labels: app: mysql spec: containers: - image: mysql:5.7 imagePullPolicy: IfNotPresent name: mysql env: - name: MYSQL_DATABASE valueFrom: configMapKeyRef: name: mysql-configmaps key: MYSQL_DATABASE - name: MYSQL_USER valueFrom: configMapKeyRef: name: mysql-configmaps key: MYSQL_USER - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secrets key: MYSQL_ROOT_PASSWORD - name: MYSQL_PASSWORD valueFrom: secretKeyRef: name: mysql-secrets key: MYSQL_PASSWORD
$ kubectl apply -f lab02/dep-mysql.yaml deployment.apps/mysql configured
$ kubectl get svc -n 4labs NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE app NodePort 10.102.86.152 <none> 8080:31541/TCP 28h mysql ClusterIP 10.101.224.168 <none> 3306/TCP 28h
$ kubectl -n 4labs get svc mysql -o wide | awk -F" " '{print $3}' | tail -1 10.101.224.168
$ export BANCO=$(kubectl -n 4labs get svc mysql -o wide | awk -F" " '{print $3}' | tail -1)
$ sudo apt install mariadb-client
$ mysql -h $BANCO -u php -p4linux -D php Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.37 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [php]> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | php | +--------------------+ 2 rows in set (0.001 sec) MySQL [php]> EXIT Bye