Oracle Kubernetes Engine(OKE)에 Mattermost 배포
Mattermost v12.0요약
지원되는 Oracle Cloud Marketplace 목록인 Mattermost - OCI-Native (Kubernetes-based) 를 사용하면 Oracle Cloud Infrastructure(OCI)에 고가용성 Mattermost 환경을 배포할 수 있습니다.
지원되는 Oracle Cloud Marketplace 목록인 Mattermost - OCI-Native (Kubernetes-based) 를 사용하면 Oracle Cloud Infrastructure(OCI)에 고가용성 Mattermost 환경을 배포할 수 있습니다. 하나의 가이드 스택이 새로운 Oracle Kubernetes Engine(OKE) 클러스터, 관리형 OCI Database with PostgreSQL 시스템, 파일 첨부 파일용 Object Storage 버킷, Mattermost Kubernetes Operator, 그리고 OCI Native Ingress Controller를 통한 HTTPS 인그레스를 프로비저닝합니다.
시작하기 전에#
배포하기 전에 다음이 있는지 확인하세요.
- 리소스를 생성할 권한이 있는 Oracle Cloud 테넌시 및 컴파트먼트 (VCN, OKE, IAM 정책, OCI Database with PostgreSQL, Object Storage, Resource Manager)
- 새 OKE 클러스터와 기본 워커 풀에 대한 충분한 서비스 한도 (노드 3개, 각각 2 OCPU/16GB의
VM.Standard.E5.Flex) 및 OCI Database with PostgreSQL 시스템에 대한 한도 - Mattermost 로드 밸런서를 가리키는 DNS
A레코드를 생성할 수 있는 등록된 도메인 이름 - 해당 도메인의 TLS 인증서를 OCI Certificate Service에 임포트하고, 배포 전에 그 OCID를 준비해 두어야 합니다. 스택은 원시 PEM/개인 키를 허용하지 않으며, 인증서 OCID만 허용합니다.
- 100명 이상 사용자를 위해 배포할 경우 Mattermost Enterprise 라이선스가 필요합니다. 더 큰 규모는 Mattermost와 PostgreSQL을 고가용성 모드로 실행하며 라이선스가 필요합니다.
설치 단계#
설치 프로세스에는 Mattermost 배포 및 필요한 구성 요소 구성이 포함됩니다.
1단계: Oracle Cloud Marketplace에서 시작#
Mattermost - OCI-Native (Kubernetes-based) 목록으로 이동하여 스택 시작을 선택합니다.

2단계: 스택 정보#
스택 생성 페이지에서 정보를 검토한 다음 스택 이름, 설명, 컴파트먼트, Terraform 버전을 설정합니다.

3단계: 변수 구성#
Mattermost 배포에 대한 모든 세부 정보를 설정합니다. 변수는 영역별로 그룹화되어 있으며, 고급 그룹은 고급 옵션 표시 토글 뒤에 숨겨져 있어 기본 흐름을 단순하게 유지합니다.
일반 구성#
- 컴파트먼트:
- 스택이 생성하는 모든 리소스(OKE 클러스터, VCN, PostgreSQL DB 시스템, Object Storage 버킷)의 대상 컴파트먼트입니다.
- 클러스터 이름 접두사:
- 스택이 생성하는 모든 OCI 리소스에 접두사로 사용됩니다(기본값:
mattermost).
- 스택이 생성하는 모든 OCI 리소스에 접두사로 사용됩니다(기본값:
- 복구 옵션 표시:
- 일반적인 배포에서는 꺼두세요. 이전 적용(apply)이 실패하여 재적용을 막는 리소스가 남아 있는 경우에만 활성화하세요. 활성화하면 새 리소스 이름을 강제하는 배포 ID 리비전 필드가 표시됩니다.
Mattermost 설치#
- Mattermost 설치 이름:
- 이 설치의 이름입니다(기본값:
mattermost-prod).
- 이 설치의 이름입니다(기본값:
- Mattermost 설치 규모:
- 예상 활성 사용자 수에 맞는 규모를 선택하세요:
100users,1000users,5000users,10000users,25000users중 하나입니다(기본값:100users). 이 값은 Mattermost Pod 리소스와 PostgreSQL 토폴로지(인스턴스 수, 형태)를 모두 결정합니다. 이는 생성 시점에만 설정 가능한 값입니다. OCI가 PostgreSQL 토폴로지를 제자리에서 수정할 수 없으므로, 나중에 변경하려면 새 스택을 배포해야 합니다. 100명을 초과하는 규모는 Mattermost와 PostgreSQL을 고가용성 모드로 배포하며 Enterprise 라이선스가 필요합니다.
- 예상 활성 사용자 수에 맞는 규모를 선택하세요:
- Mattermost 버전:
- 설치할 Mattermost 서버 버전입니다.
- Mattermost 라이선스 키:
- Enterprise 라이선스 파일을 업로드합니다.
100users에서는 선택 사항이며, 비워 두면 라이선스 없이 시작한 다음 나중에 System Console > Edition and License에서 라이선스를 추가할 수 있습니다. 더 큰 모든 규모에서는 필수입니다.
- Enterprise 라이선스 파일을 업로드합니다.
- Mattermost FQDN:
- 최종 사용자가 접속할 호스트명입니다(예:
mattermost.domain.com). 배포 후 이 호스트명의 DNSA레코드를 스택 출력의 로드 밸런서 IP로 지정하게 됩니다.
- 최종 사용자가 접속할 호스트명입니다(예:
- OCI Certificate Service OCID:
- 해당 FQDN을 위해 OCI Certificate Service에 임포트한 인증서의 OCID입니다.
- Mattermost LB 허용 CIDR 블록:
- HTTPS로 Mattermost에 접근할 수 있는 IP 범위입니다. 기본값(
0.0.0.0/0)은 어디서든 접근을 허용합니다. 기업용 또는 내부 전용 배포에서는 이 범위를 제한하세요.
- HTTPS로 Mattermost에 접근할 수 있는 IP 범위입니다. 기본값(
- 고급 Mattermost 옵션 표시:
- 이 옵션을 켜면 다음 필드가 표시되며, 대부분의 배포에 적합한 기본값이 설정되어 있습니다.
- Kubernetes 네임스페이스: Mattermost가 설치되는 네임스페이스입니다(기본값:
mattermost). - Helm 리포지터리 URL: Mattermost Operator Helm 차트의 소스입니다(기본값:
https://helm.mattermost.com). - Operator Helm 차트 버전: 목록에서 설치할 Mattermost Operator Helm 차트 버전을 선택합니다(기본값: 제공되는 최신 버전).
- NIC 준비 대기 제한 시간: 적용 실패로 처리하기 전까지 Native Ingress Controller가 준비될 때까지 대기하는 시간입니다(기본값: 180초).
- Kubernetes 네임스페이스: Mattermost가 설치되는 네임스페이스입니다(기본값:
- 이 옵션을 켜면 다음 필드가 표시되며, 대부분의 배포에 적합한 기본값이 설정되어 있습니다.
OKE 구성#
- Kubernetes 버전:
- OKE가 게시하는 최신 버전을 자동으로 선택하려면 비워 두세요.
- 워커 OS 버전:
- Oracle Linux
8또는9(기본값:8).
- Oracle Linux
- 워커 수:
- 클러스터의 워커 노드 수입니다(기본값: 3, 고가용성을 위해 권장). 스택을 편집하고 재적용하여 나중에 조정할 수 있습니다.
- 고급 OKE 옵션 표시:
- 이 옵션을 켜면 다음 필드가 표시되며, 대부분의 배포에 적합한 기본값이 설정되어 있습니다.
- Virtual Cloud Network(VCN) CIDR: 클러스터 네트워크의 IP 주소 범위입니다(기본값:
10.20.0.0/16). 피어링해야 하는 기존 네트워크와 충돌하는 경우에만 변경하세요. - API 엔드포인트 허용 CIDR 블록: Kubernetes API에 접근할 수 있는 IP 범위입니다(기본값:
0.0.0.0/0, 즉 어디서든). 보안을 강화하려면 기업용 게이트웨이나 VPN 범위로 제한하세요. 배스천 호스트 같은 대체 경로가 없으므로 선택한 범위가 관리자 본인의 접근을 반드시 포함하는지 확인하세요. - 클러스터 CNI: Pod 네트워킹 모드입니다:
OCI_VCN_IP_NATIVE(기본값, 더 나은 성능과 긴밀한 VCN 통합을 위해 권장) 또는FLANNEL_OVERLAY. - 워커 형태: 각 워커 노드의 컴퓨트 형태입니다(기본값: 2 OCPU / 16 GB 메모리의
VM.Standard.E5.Flex), 대부분의 Mattermost 배포에 적합합니다. - 워커 풀 이름: OCI 콘솔과 CLI에 표시되는 워커 노드 풀의 이름입니다.
- Virtual Cloud Network(VCN) CIDR: 클러스터 네트워크의 IP 주소 범위입니다(기본값:
- 이 옵션을 켜면 다음 필드가 표시되며, 대부분의 배포에 적합한 기본값이 설정되어 있습니다.
클러스터 도구#
- Metrics Server 설치:
- 나중에 자체 오토스케일러를 추가할 경우
kubectl top과 HPA가 의존하는 메트릭 API를 사용할 수 있게 합니다. 기본적으로 켜져 있으며 모든 배포에 권장됩니다.
- 나중에 자체 오토스케일러를 추가할 경우
- OKE IAM 정책 생성:
- OKE가 클러스터 리소스를 관리하는 데 필요한 IAM 정책을 자동으로 생성합니다. 기본적으로 켜져 있으며, 해당 정책이 컴파트먼트에 이미 있는 경우에만 비활성화하세요.
PostgreSQL#
- PostgreSQL 데이터베이스 이름/설명:
- OCI Database with PostgreSQL 시스템의 표시 이름과 설명입니다(아래의 Mattermost 애플리케이션 데이터베이스 이름과는 별개입니다).
- PostgreSQL 메이저 버전:
14,15,16,17중 하나입니다(기본값:16).
- PostgreSQL 관리자 사용자명/비밀번호:
- DB 시스템의 관리자 자격 증명입니다. 비밀번호는 8~32자여야 하며 대문자, 소문자, 숫자, 특수 문자를 각각 하나 이상 포함해야 하고, 작은따옴표, 큰따옴표, 백슬래시, 세미콜론은 포함할 수 없습니다.
- Mattermost 데이터베이스 이름/사용자/비밀번호:
- Mattermost 자체가 PostgreSQL 내부에서 연결할 때 사용하는 데이터베이스, 사용자, 비밀번호입니다(기본값:
mattermost/mmuser). 비밀번호는 위의 PostgreSQL 관리자 비밀번호와 동일한 규칙(8~32자, 대소문자, 숫자, 특수 문자 포함; 따옴표·백슬래시·세미콜론 불가)을 따릅니다.
- Mattermost 자체가 PostgreSQL 내부에서 연결할 때 사용하는 데이터베이스, 사용자, 비밀번호입니다(기본값:
- Mattermost 데이터베이스용 서브넷 생성:
- 기본적으로 켜져 있으며, DB 시스템 전용 서브넷을 생성합니다. 기존 서브넷을 선택하려면 비활성화하세요.
- PostgreSQL 백업 보존 기간(일):
- 자동 백업 보존 기간으로, 7~35일입니다(기본값: 30).
- 고급 PostgreSQL 옵션 표시:
- 이 옵션을 켜면 다음 필드가 표시되며, 대부분의 배포에 적합한 기본값이 설정되어 있습니다.
- PostgreSQL 포트: PostgreSQL이 수신 대기하는 포트입니다(기본값:
5432). - 백업 시간대: 자동 백업을 위한 일별 UTC 시간대입니다.
- 유지보수 시간대: 유지보수 작업을 위한 주별 UTC 시간대입니다.
- 티어별 재정의: 각 Mattermost 설치 규모 티어에 대한 인스턴스 수, OCPU, 메모리 재정의 값입니다.
- PostgreSQL 포트: PostgreSQL이 수신 대기하는 포트입니다(기본값:
- 이 옵션을 켜면 다음 필드가 표시되며, 대부분의 배포에 적합한 기본값이 설정되어 있습니다.
Object Storage#
- 버킷 컴파트먼트:
- Object Storage 버킷의 컴파트먼트입니다. 기본값은 메인 컴파트먼트입니다.
- Object Storage 버킷 이름:
- Mattermost 파일 첨부 파일을 저장하는 데 사용되는 버킷의 이름입니다.
태그 지정#
- 리소스 태깅:
- 스택이 생성하는 모든 리소스에 OCI 자유 형식 태그 또는 정의된 태그를 선택적으로 적용합니다.
4단계: 검토 및 적용#
모든 설정을 확인하고 만들기를 선택하여 배포를 시작합니다. Resource Manager 작업과 로그를 모니터링합니다. 첫 적용에는 약 30분이 걸립니다.

5단계: 배포 후#
작업이 완료되면 스택의 애플리케이션 정보 탭을 열어 배포 세부 정보를 확인합니다.

- 로드 밸런서 IP 주소: 이 레이블 옆에 표시된 IP를 복사하여 Mattermost FQDN에서 이 IP로 DNS
A레코드를 생성하세요. 이 예약된 OCI 퍼블릭 IP는 재적용 후에도 안정적으로 유지됩니다. - Mattermost URL(오른쪽 상단 버튼): DNS가 전파되면 접근할 수 있는 공개 HTTPS URL입니다.
- OKE 클러스터 OCID 및 배포된 Kubernetes 버전:
kubectl이나 OCI CLI로 연결해야 할 때 OKE 클러스터를 식별합니다.
A 레코드가 확인(resolve)되면 브라우저를 열고 Mattermost URL로 이동합니다.
6단계: Mattermost 업그레이드#
Mattermost 설치를 업그레이드하려면 다음을 수행하세요.
- Resource Manager 스택으로 이동하여 편집을 선택합니다.
- Mattermost 버전 변수를 대상 릴리즈로 업데이트합니다.
- 저장한 다음 계획(Plan)을 실행하고, 이어서 적용(Apply)을 실행합니다.
Native Ingress Controller는 Pod Readiness Gates를 사용하여 새 Pod가 OCI 로드 밸런서 백엔드에서 정상(healthy)으로 보고되기 전까지는 라우팅 대상에서 제외합니다. HA 규모 설치(100users 초과, Mattermost 복제본 다수)에서는 다른 복제본이 계속 트래픽을 처리하므로 롤아웃 중 중단이 최소화됩니다. 단일 복제본으로 실행되는 기본 100users 규모에서는 해당 Pod가 재시작되는 동안 짧은 중단이 예상됩니다.
성공 팁
- 시작하기 전에 필요한 모든 권한을 갖고 있는지 확인하세요.
- 변수를 구성하기 전에 TLS 인증서를 OCI Certificate Service에 임포트하고 그 OCID를 준비해 두세요. 스택은 원시 인증서/키 쌍을 허용하지 않습니다.
- Mattermost 설치 규모를 신중하게 선택하세요. 기존 스택에서는 PostgreSQL 시스템을 재생성하지 않고는 변경할 수 없습니다.
- 클러스터에 대해
kubectl을 실행하려면(예: OCI Cloud Shell에서), 애플리케이션 정보 탭의 OKE 클러스터 OCID와 배포 리전을 사용해 kubeconfig를 가져오세요:oci ce cluster create-kubeconfig --cluster-id <oke_cluster_ocid> --region <deployment_region> --file $HOME/.kube/config --kube-endpoint PUBLIC_ENDPOINT --token-version 2.0.0.kubectl get nodes를 실행하여 접근을 확인합니다. - 더 구체적인 오류 메시지를 위해 항상 Resource Manager 작업과
kubectl logs를 사용한 Pod 로그를 모니터링하세요. - 자세한 내용은 공식 OCI Database with PostgreSQL 문서와 OKE 문서를 참조하세요.
일반적인 오류 및 해결 방법#
- 오류: 권한 누락으로 스택 생성 실패
- 원인: 스택을 실행하는 사용자 또는 그룹에 대한 IAM 정책이 올바르게 설정되지 않았습니다.
- 해결 방법: Resource Manager, OKE, 네트워킹, OCI Database with PostgreSQL, Object Storage, Certificate Service에 대한 권한이 있는지 확인합니다.
- 오류: Mattermost 라이선스가 필요하여 계획(Plan) 실패
- 원인: 라이선스를 업로드하지 않은 상태에서 Mattermost 설치 규모가
100users보다 크게 설정되었습니다. 더 큰 규모는 고가용성 모드로 배포되며 Enterprise 라이선스가 필요합니다. - 해결 방법: 유효한 Mattermost Enterprise 라이선스를 업로드하거나
100users를 선택하세요.
- 원인: 라이선스를 업로드하지 않은 상태에서 Mattermost 설치 규모가
- 오류: 배포 후 Mattermost URL이 확인(resolve)되지 않음
- 원인: FQDN에 대한 DNS
A레코드가 아직 생성되지 않았거나 전파되지 않았습니다. - 해결 방법: Mattermost FQDN에서
mattermost_lb_ip출력값으로A레코드를 생성한 다음 DNS 전파를 기다립니다.
- 원인: FQDN에 대한 DNS
- 오류: 인증서 OCID가 거부되거나 인그레스가 정상(healthy) 상태가 되지 않음
- 원인: OCI Certificate Service OCID가 존재하지 않거나, 동일한 테넌시에 있지 않거나, 구성된 FQDN과 일치하지 않습니다.
- 해결 방법: OCI Certificate Service에서 인증서를 다시 확인하고 OCID가 올바르게 복사되었는지 확인합니다.
- 오류: PostgreSQL 비밀번호 거부됨
- 원인: PostgreSQL 관리자 비밀번호 또는 Mattermost 데이터베이스 비밀번호가 요구되는 복잡성 규칙(8~32자, 대소문자, 숫자, 특수 문자 포함; 따옴표·백슬래시·세미콜론 불가)을 충족하지 않습니다.
- 해결 방법: 필드 설명에 표시된 패턴을 충족하는 비밀번호를 다시 입력하세요.
- 오류: PostgreSQL 시스템이나 버킷에서 Terraform destroy 실패
- 원인: 데이터베이스 시스템은 설계상 destroy 보호가 활성화되어 있으며, OCI는 비어 있지 않은 Object Storage 버킷 삭제를 거부합니다.
- 해결 방법: 버킷을 먼저 비운 다음, 삭제하기 전에 데이터베이스의 라이프사이클 보호를 비활성화하세요.
생성하는 리소스에 대한 Oracle Cloud Infrastructure 비용은 귀하가 책임지며, Oracle Cloud 크레딧은 Mattermost 라이선스 구매에 사용할 수 없습니다.
Mattermost 서버 관리에 대한 자세한 내용은 관리 가이드를 방문하세요.