Kubernetes은 이제 확장 가능하고 고가용성을 갖춘 애플리케이션을 배포하는 표준 방법입니다. Kubernetes를 사용하면 개발자가 필요에 따라 인스턴스를 빠르게 생성하고 제거하여 콘텐츠를 원활하게 전달할 수 있습니다. Kubernetes에 대해 자세히 알아보려면 다음 상세 가이드를 참조하세요. Getting to Know Kubernetes.
Helm은 Kubernetes에 애플리케이션을 설치하는 데 사용되는 매우 인기 있는 패키지 관리자입니다. Helm은 Kubernetes 클러스터에 애플리케이션을 배포 및 관리하고 그 과정을 단순화하는 것을 목표로 합니다. 또한 패키지화되어 바로 사용할 수 있는 Kubernetes용 애플리케이션에 대한 액세스도 제공합니다. 이를 Charts라고 합니다. Kubernetes와 Helm에 익숙해지는 것은 모든 DevOps 전문가의 무기에 중요한 추가 요소입니다.
WordPress은 가장 인기 있는 콘텐츠 관리 시스템(CMS) 중 하나입니다. 이를 MySQL 데이터베이스와 결합하면 고성능 및 확장성이 뛰어난 웹 애플리케이션을 얻을 수 있습니다. MySQL을 외부로 유지하면 더 많은 애플리케이션이 해당 사용 사례에 동일한 데이터베이스를 활용할 수 있습니다.
이 글에서 우리는 Helm 패키지 관리자를 사용하여 Kubernetes에 WordPress를 설치하고 이를 외부 MySQL 서버에 연결할 것입니다. 시작해 봅시다!
Prerequisites
이 튜토리얼을 성공적으로 완료하려면 다음과 같은 소프트웨어 설정이 필요합니다:
- 정상 작동 중인 Kubernetes 클러스터. 다음 Ubuntu에 Kubernetes를 설치하는 단계에 대한 튜토리얼을 따르세요..
- Kubernetes 명령줄 도구인
kubectl. - 설치된 Helm 패키지 관리자가 필요합니다. 사용할 준비가 된 Helm이 없다면 다음 공식 릴리스 페이지에서 다운로드할 수 있습니다: GitHub – helm/helm: The Kubernetes Package Manager. Helm에 대한 단계별 가이드를 시작하려면 다음 글도 읽어보세요: Introduction to Helm: Package Manager for Kubernetes.
- root 사용자 및 비밀번호와 함께 MySQL이 설치되어 있어야 합니다. MySQL을 처음 접하신다면 다음을 꼭 확인해 보세요: 서버에 MySQL을 설정하는 방법 및 MySQL 기본 사항 및 MySQL User – Create and Grant Permissions.
또한 MySQL과 연결된 실행 중인 Kubernetes 클러스터가 있어야 합니다. 클러스터가 여러 개인 사용자의 경우, 현재 MySQL과 연결된 클러스터가 무엇인지 확인하세요. 귀하의 kubectl 설정 파일에 구성된 모든 다양한 클러스터를 보려면 아래 명령을 실행하세요:
|
1 |
kubectl config get-contexts |
컴퓨터에서 다음과 같은 출력이 표시되어야 합니다:
|
Current |
Name |
Cluster |
AuthInfo |
Namespace |
|
* |
docker-desktop |
docker-desktop |
docker-desktop |
Kubernetes를 실행하기 위해 Docker Desktop을 사용하고 있으므로, docker-desktop이 표시됩니다. 값은 다를 수 있습니다. 별표 표시(*)는 현재 어떤 클러스터가 기본 컨텍스트인지 나타냅니다. 현재 컨텍스트를 변경해야 하는 경우 다음을 실행하세요:
|
1 |
kubectl config use-context context-name |
이제 튜토리얼 단계를 진행할 준비가 되었습니다.
Setting Up MySQL
먼저, WordPress에 연결할 전용 사용자를 MySQL에 생성합니다. WordPress 설치가 Kubernetes 클러스터 내부의 별도 서버에 존재하기 때문에 이 작업이 필요합니다. MySQL 서버에서 다음 명령으로 MySQL에 로그인합니다:
|
1 |
mysql -u root -p |
root 비밀번호를 묻는 메시지가 표시됩니다. 비밀번호를 입력하면 연결됩니다.
-
Creating a dedicated database for WordPress
MySQL에는 데이터베이스가 제한 없이 존재할 수 있습니다. 추가 데이터베이스를 애플리케이션 간에 공유할 수도 있습니다. WordPress에도 자체 데이터베이스가 함께 제공됩니다. 여기서는 WordPress를 위한 전용 데이터베이스를 생성해야 합니다. 이 전용 데이터베이스를 생성하려면 MySQL bash에서 아래 문을 실행하면 됩니다:
|
1 |
CREATE DATABASE wordpress |
-
Creating dedicated user for Wordpress
데이터베이스가 생성된 후, 이 데이터베이스를 위한 전용 사용자를 생성합니다. 이 사용자를 사용하여 새로 생성된 데이터베이스에 연결합니다:
|
1 |
CREATE USER wordpress_user IDENTIFIED BY '<password>'; |
위에서 강력한 비밀번호를 입력하세요. WordPress용 사용자는 생성했지만 아직 권한을 추가하지 않았습니다. 사용자가 액세스 및 DML(데이터 조작) 작업을 수행할 수 있도록 권한을 제공해야 합니다. 간단하게 진행하기 위해 사용자에게 모든 권한을 제공하겠습니다. 주의하세요, 이는 프로덕션 환경에서는 권장되지 않습니다. MySQL 셸에서 아래 명령을 실행하세요:
|
1 |
GRANT ALL PRIVILEGES ON wordpress.* TO wordpress_user@'%'; |
액세스 권한을 관리하는 내부 MySQL 테이블을 업데이트하려면 다음 명령문을 사용하세요:
|
1 |
FLUSH PRIVILEGES; |
마지막으로 MySQL 셸에서 아래 명령을 실행하여 MySQL 클라이언트를 닫을 수 있습니다:
|
1 |
Exit; |
-
사용자 및 데이터베이스 확인
다음으로, WordPress 사용자가 WordPress 데이터베이스에 연결할 수 있는지 확인해야 합니다. 이를 위해 MySQL 셸을 열고 아래 명령을 실행하세요:
|
1 |
mysql -u <wordpress_user> -p |
|
1 |
show databases |
-
MySQL 서버에 대한 원격 연결 허용
지금까지 작동하는 WordPress 사용자와 WordPress 데이터베이스를 확보했습니다. 하지만 MySQL 서버와 WordPress 데이터베이스가 서로 다른 서버에 있습니다. 따라서 WordPress가 MySQL 데이터베이스에 연결할 수 있도록 해야 합니다. 이를 위해 원격 호스트에서 들어오는 연결을 허용하도록 MySQL 구성을 편집해야 합니다. 다음 파일을 편집해야 합니다: mysqld.cnf 파일. Linux 기반 시스템에서 이 파일은 다음 경로에 있습니다:
|
1 |
/etc/mysql/mysql.conf.d/mysqld.cnf |
그 후, 텍스트 편집기를 사용하여 파일을 열고 다음을 찾으세요: bind-address. bind-address는 MySQL이 수신 대기할 수 있는 IP를 지정합니다. 기본적으로 MySQL은 다음에서만 수신 대기합니다: 127.0.0.1.. 외부 호스트의 연결을 허용하려면 bind-address를 다음으로 변경하세요: 0.0.0.0.. 이러한 변경 사항을 적용하려면 아래 명령을 실행하여 MySQL 서버를 재시작하세요:
|
1 |
systemctl restart mysql |
|
1 |
mysql -h <mysql_server_ip> -u wordpress_user -p |
mysql_server_ip를 추가하고 실행하세요. 오류 없이 연결할 수 있다면 다음 단계로 진행할 수 있습니다.
WordPress 설치 및 업그레이드
WordPress는 기본적으로 MariaDB를 데이터베이스로 사용합니다. 우리는 자체 MySQL 데이터베이스를 사용하고자 하므로 이 데이터베이스를 사용하지 않을 것입니다. 이 변경과 함께 관리자 사용자 및 비밀번호도 구성해야 합니다. 이는 명령줄 매개변수를 구현하여 수행합니다.
먼저, my blog-settings라는 새 폴더를 만듭니다. 폴더 내에 values.yaml 파일을 생성합니다. values.yaml 파일에 아래 내용을 입력하세요:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
## WordPress Settings wordpressUsername: my_user wordpressPassword: some_strong_password wordpressEmail: sample@example.com wordpressFirstName: User wordpressLastName: Last wordpressBlogName: My 블로그! ## Database Settings externalDatabase: host: <mysql_server_ip> user: wordpress_user password: password database: wordpress ## Enable Maria DB mariadb: enabled: false |
이 파일은 설명이 필요 없을 정도로 명확합니다. 아래에서 MariaDB를 비활성화한 것을 확인하세요. 이제 구성이 준비되었으므로 다음을 실행할 차례입니다: helm WordPress 설치를 위한 것입니다. PowerShell에서 아래 명령을 실행하세요:
|
1 |
helm install myblog -f values.yaml stable/wordpress |
myblog-wordpress. WordPress를 사용할 준비가 될 때까지 시간이 좀 걸립니다. 실행 중인 서비스를 찾으려면 아래 명령을 실행하세요:|
1 |
kubectl get services |
|
NAME |
TYPE |
CLUSTER-IP |
EXTERNAL-IP |
PORT |
|
myblog-wordpress |
ClusterIP |
10.96.0.1 |
<none> |
80:31403/TCP,443:30879/TCP |
여기 실행 중인 서비스에 대한 매우 유용한 정보가 있습니다. 외부 IP와 포트에 주의를 기울여야 합니다. 외부 IP는 WordPress가 서비스되는 IP입니다. Docker Desktop을 사용하고 있기 때문에 외부 IP 아래에 none이 표시됩니다. 시스템에 따라 IP를 얻게 됩니다. 웹 브라우저를 열고 이 IP를 입력하세요. WordPress 로그인 페이지가 표시됩니다:
이것들은 위의 YAML 파일에서 제공한 자격 증명입니다. 해당 자격 증명을 입력하면 WordPress에서 웹사이트를 구성하고 새로 생성된 MySQL 데이터베이스에 콘텐츠를 저장할 준비가 완료됩니다.
WordPress 업그레이드
WordPress는 보안 취약점을 수정하고 더 많은 기능/버그 수정 등을 출시하기 위해 업데이트를 릴리스합니다. PowerShell에서 아래 명령을 실행하여 WordPress 설치를 업그레이드할 수 있습니다:
|
1 |
helm upgrade |
업그레이드 전에 릴리스 목록을 보려면 아래 명령을 실행할 수 있습니다:
|
1 |
helm list |
다음과 같은 출력을 얻게 됩니다:
|
1 2 3 |
잠시 대기 동안 우리가 가져오는 최신 정보 로부터 귀하의 차트 저장소 … …건너뛰기 로컬 차트 저장소 …성공적으로 가져옴 업데이트 업데이트 로부터 그 “stable” 차트 저장소 |
사용 가능한 새 버전의 WordPress 저장소가 있는지 확인하려면 아래 명령을 실행할 수 있습니다:
|
1 |
helm inspect chart stable/wordpress |
WordPress 릴리스를 최신 WordPress 차트로 업그레이드하려면 항상 다음을 실행해야 합니다:
|
1 |
helm upgrade -f values.yaml <your_name> stable/wordpress |
구성 값이 변경되지 않도록 이전과 동일한 구성 파일을 사용해야 합니다.
릴리스 롤백
Helm을 사용하여 업그레이드를 수행할 때마다 Helm은 릴리스의 체크포인트를 생성합니다. 상황이 예상대로 작동하지 않으면 되돌릴 수 있습니다. 릴리스를 비교하고 되돌릴 수 있습니다. 어떤 문제로 인해 업그레이드 프로세스가 잘못되면 이전 릴리스로 롤백할 수 있습니다. 롤백하려면 아래 명령을 실행하세요:
|
1 |
helm rollback release-name revision-number |
우리의 경우, 이전 릴리스로 롤백하려면 아래 명령을 실행하세요:
|
1 |
helm rollback myblog 1 |
이제 되돌리기 프로세스가 성공적으로 완료되었는지 확인하려면 helm list 명령을 실행할 수 있습니다.
결론
이 포괄적인 튜토리얼에서는 MySQL을 설정하고 이 외부 MySQL을 사용하여 WordPress를 설치하는 방법을 보여주었습니다. Helm 패키지 관리자를 사용하여 Kubernetes에 WordPress를 설치하고 WordPress 업그레이드도 수행했습니다.
이제 Helm을 사용한 Kubernetes 설치에 대해 알게 되었으니 여기서 멈추지 마세요. 다음 링크를 통해 the CloudSigma blog를 방문하여 Kubernetes에 대해 자세히 알아보세요:
- Ubuntu 18.04에서 Kubernetes 클러스터에 PHP 애플리케이션 배포하기
- Ubuntu 18.04에서 Kubeadm을 사용하여 Kubernetes 클러스터를 생성하는 방법
- What is Docker? An Overview of the Docker Ecosystem
즐거운 컴퓨팅 되세요!

댓글
아직 댓글이 없습니다. 첫 번째로 작성해 보세요.