Skip to content

Kubernetes:Basic:Wordpress

k3s가 설치된 상태로 워드프레스 시작하기.

초기 상태

$ kubectl get all
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.43.0.1    <none>        443/TCP   67d

spec

apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress-mysql
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
      tier: mysql
  template:
    metadata:
      labels:
        app: wordpress
        tier: mysql
    spec:
      containers:
        - image: mariadb:10.7
          name: mysql
          env:
            - name: MYSQL_DATABASE
              value: wordpress
            - name: MYSQL_ROOT_PASSWORD
              value: password
          ports:
            - containerPort: 3306
              name: mysql

---
apiVersion: v1
kind: Service
metadata:
  name: wordpress-mysql
  labels:
    app: wordpress
spec:
  ports:
    - port: 3306
  selector:
    app: wordpress
    tier: mysql

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
      tier: frontend
  template:
    metadata:
      labels:
        app: wordpress
        tier: frontend
    spec:
      containers:
        - image: wordpress:5.9.1-php8.1-apache
          name: wordpress
          env:
            - name: WORDPRESS_DB_HOST
              value: wordpress-mysql
            - name: WORDPRESS_DB_NAME
              value: wordpress
            - name: WORDPRESS_DB_USER
              value: root
            - name: WORDPRESS_DB_PASSWORD
              value: password
          ports:
            - containerPort: 80
              name: wordpress

---
apiVersion: v1
kind: Service
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  type: NodePort
  ports:
    - port: 80
  selector:
    app: wordpress
    tier: frontend

실행 및 상태 확인

apply명령으로 spec을 적용한다.

$ kubectl apply -f wordpress-k8s.yml
deployment.apps/wordpress-mysql created
service/wordpress-mysql created
deployment.apps/wordpress created
service/wordpress created

상태를 확인해 보면 다음과 같다:

$ kubectl get all
NAME                                   READY   STATUS    RESTARTS   AGE
pod/wordpress-mysql-5ffb97c5b6-qpztz   1/1     Running   0          6s
pod/wordpress-65d4c96dcc-52fds         1/1     Running   0          6s

NAME                      TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/kubernetes        ClusterIP   10.43.0.1       <none>        443/TCP        67d
service/wordpress-mysql   ClusterIP   10.43.129.163   <none>        3306/TCP       6s
service/wordpress         NodePort    10.43.170.155   <none>        80:31644/TCP   6s

NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/wordpress-mysql   1/1     1            1           6s
deployment.apps/wordpress         1/1     1            1           6s

NAME                                         DESIRED   CURRENT   READY   AGE
replicaset.apps/wordpress-mysql-5ffb97c5b6   1         1         1       6s
replicaset.apps/wordpress-65d4c96dcc         1         1         1       6s

service/wordpress의 80번 포트가 외부로 Expose 된 포트를 확인한 후 localhost:31644 주소로 접속하면 정상적으로 워드 프레스 화면이 출력된다.

제거

kubectl delete -f wordpress-k8s.yml

See also

Favorite site