Kubernetes 도구를 사용하여 Azure SQL 관리형 인스턴스 만들기Create Azure SQL managed instance using Kubernetes tools

참고

미리 보기 기능으로, 이 문서에 제시된 기술에는 Microsoft Azure 미리 보기에 대한 보충 사용 약관이 적용됩니다.As a preview feature, the technology presented in this article is subject to Supplemental Terms of Use for Microsoft Azure Previews.

최신 업데이트는 릴리스 정보에서 확인할 수 있습니다.The latest updates are available in the release notes.

현재 업데이트의 경우 직접 연결 모드의 Arc 데이터 컨트롤러 배포는 Azure Portal에서만 지원됩니다.For the current update, deployment of Arc data controller in direct connectivity mode is only supported from Azure portal.

필수 구성 요소Prerequisites

Azure Arc 데이터 컨트롤러는 이미 만들어 놓은 상태일 것입니다.You should have already created an Azure Arc data controller.

Kubernetes 도구를 사용하여 SQL 관리형 인스턴스를 만들려면 Kubernetes 도구가 설치되어 있어야 합니다.To create a SQL managed instance using Kubernetes tools, you will need to have the Kubernetes tools installed. 본 문서의 예제에서는 kubectl을 사용할 것이지만, Kubernetes 대시보드, oc 또는 helm과 같은 Kubernetes 도구나 Kubernetes yaml/json에 익숙한 상태라면 비슷한 방식에서 이러한 Kubernetes 도구를 사용할 수도 있습니다.The examples in this article will use kubectl, but similar approaches could be used with other Kubernetes tools such as the Kubernetes dashboard, oc, or helm if you are familiar with those tools and Kubernetes yaml/json.

kubectl 도구 설치Install the kubectl tool

개요Overview

SQL 관리형 인스턴스를 만들려면 Kubernetes 비밀을 만들어 시스템 관리자 로그인 및 암호를 안전하게 저장하여야 하고 sqlmanagedinstance 사용자 지정 리소스 정의에 따라 SQL 관리형 인스턴스 사용자 지정 리소스를 만들어야 합니다.To create a SQL managed instance, you need to create a Kubernetes secret to store your system administrator login and password securely and a SQL managed instance custom resource based on the sqlmanagedinstance custom resource definition.

yaml 파일 만들기Create a yaml file

템플릿 yaml 파일에서 시작하여 사용자 지정 SQL 관리형 인스턴스 yaml 파일을 만들 수 있습니다.You can use the template yaml file as a starting point to create your own custom SQL managed instance yaml file. 해당 파일을 로컬 컴퓨터에 다운로드하여 텍스트 편집기에서 엽니다.Download this file to your local computer and open it in a text editor. VS Code처럼 yaml 파일에 대하여 구문 강조 표시와 린팅을 지원하는 텍스트 편집기를 사용하는 것이 좋습니다.It is useful to use a text editor such as VS Code that support syntax highlighting and linting for yaml files.

다음은 예제 yaml 파일입니다.This is an example yaml file:

apiVersion: v1
data:
  password: <your base64 encoded password>
  username: <your base64 encoded user name. 'sa' is not allowed>
kind: Secret
metadata:
  name: sql1-login-secret
type: Opaque
---
apiVersion: sql.arcdata.microsoft.com/v1alpha1
kind: sqlmanagedinstance
metadata:
  name: sql1
spec:
  limits:
    memory: 4Gi
    vcores: "4"
  requests:
    memory: 2Gi
    vcores: "1"
  service:
    type: LoadBalancer
  storage:
    data:
      className: default
      size: 5Gi
    logs:
      className: default
      size: 1Gi

로그인 및 암호 사용자 지정Customizing the login and password

Kubernetes 비밀은 Base64로 인코딩한 문자열로, 사용자 이름을 위하여 하나, 암호를 위하여 하나가 저장됩니다.A Kubernetes secret is stored as a base64 encoded string - one for the username and one for the password. 시스템 관리자 로그인 및 암호를 Base64로 인코딩하여 data.passworddata.username의 자리 표시자에 배치하여야 합니다.You will need to base64 encode a system administrator login and password and place them in the placeholder location at data.password and data.username. 템플릿에 제공된 <> 기호는 포함하지 마세요.Do not include the < and > symbols provided in the template.

참고

최적의 보안을 위하여 ‘sa’ 값은 로그인에 사용할 수 없습니다.For optimum security, using the value 'sa' is not allowed for the login . 암호 복잡성 정책을 따르세요.Follow the password complexity policy.

원하는 사용자 이름과 암호를 Base64로 인코딩하기 위하여 온라인 도구를 사용하거나, 플랫폼에 따라 기본 제공되는 CLI 도구를 사용할 수 있습니다.You can use an online tool to base64 encode your desired username and password or you can use built in CLI tools depending on your platform.

PowerShellPowerShell

[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('<your string to encode here>'))

#Example
#[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('example'))

Linux/macOSLinux/macOS

echo -n '<your string to encode here>' | base64

#Example
# echo -n 'example' | base64

이름 사용자 지정Customizing the name

템플릿에는 이름 특성을 위하여 ‘sql1’ 값이 있습니다.The template has a value of 'sql1' for the name attribute. 해당 값을 변경할 수 있지만 변경할 값은 반드시 DNS 명명 표준을 따르는 문자여야 합니다.You can change this but it must be characters that follow the DNS naming standards. 이에 일치하는 암호의 이름도 변경하여야 합니다.You must also change the name of the secret to match. 예를 들어 SQL 관리형 인스턴스 이름을 ‘sql2’와 같이 변경한다면, 그 비밀의 이름도 ‘sql1-login-secret’에서 ‘sql2-login-secret’으로 변경하여야 합니다.For example, if you change the name of the SQL managed instance to 'sql2', you must change the name of the secret from 'sql1-login-secret' to 'sql2-login-secret'

리소스 요구 사항 사용자 지정Customizing the resource requirements

필요에 따라 RAM 및 코어 제한과 요청 등의 리소스 요구 사항을 변경할 수 있습니다.You can change the resource requirements - the RAM and core limits and requests - as needed.

참고

Kubernetes 리소스 거버넌스에 대하여 자세히 알아볼 수 있습니다.You can learn more about Kubernetes resource governance.

리소스 제한 및 요청에 대한 요구 사항:Requirements for resource limits and requests:

  • 청구를 위하여 코어 제한 값은 필수 입니다.The cores limit value is required for billing purposes.
  • 리소스 요청 및 제한의 나머지 부분은 선택 사항입니다.The rest of the resource requests and limits are optional.
  • 지정하는 경우 코어 제한과 요청은 양의 정숫값이어야 합니다.The cores limit and request must be a positive integer value, if specified.
  • 지정하는 경우 코어 요청에는 최소 2코어가 필요합니다.The minimum of 2 cores is required for the cores request, if specified.
  • 메모리 값 형식은 Kubernetes 표기법을 따릅니다.The memory value format follows the Kubernetes notation.
  • 지정하는 경우 메모리 요청에는 최소 2Gi가 필요합니다.A minimum of 2Gi is required for memory request, if specified.
  • 일반적인 가이드라인에 따라, 프로덕션 사용 사례의 경우 각각의 코어마다 RAM에 4GB가 있어야 합니다.As a general guideline, you should have 4GB of RAM for each 1 core for production use cases.

서비스 유형 사용자 지정Customizing service type

원하는 경우 서비스 유형을 NodePort로 변경할 수 있습니다.The service type can be changed to NodePort if desired. 그러면 임의의 포트 번호가 할당됩니다.A random port number will be assigned.

스토리지 사용자 지정Customizing storage

사용자 환경에 맞게 스토리지의 스토리지 클래스를 사용자 지정할 수 있습니다.You can customize the storage classes for storage to match your environment. 사용할 수 있는 스토리지 클래스를 잘 모르는 경우 kubectl get storageclass 명령을 실행하여 해당 스토리지 클래스를 볼 수 있습니다.If you are not sure which storage classes are available you can run the command kubectl get storageclass to view them. 템플릿의 기본값은 ‘default’입니다.The template has a default value of 'default'. ‘default’라는 스토리지 클래스가 있다는 의미이지 기본 스토리지 클래스가 있다는 의미가 아닙니다.This means that there is a storage class named 'default' not that there is a storage class that is the default. 필요에 따라 스토리지 크기를 변경할 수도 있습니다.You can also optionally change the size of your storage. 스토리지 구성에 대한 자세한 내용을 참조하세요.You can read more about storage configuration.

SQL 관리형 인스턴스 만들기Creating the SQL managed instance

이제 SQL 관리형 인스턴스 yaml 파일을 사용자 지정하였으므로, 다음 명령을 실행하여 SQL 관리형 인스턴스를 만들 수 있습니다.Now that you have customized the SQL managed instance yaml file, you can create the SQL managed instance by running the following command:

kubectl create -n <your target namespace> -f <path to your yaml file>

#Example
#kubectl create -n arc -f C:\arc-data-services\sqlmi.yaml

생성 상태 모니터링Monitoring the creation status

SQL 관리형 인스턴스 생성을 완료하는 데는 몇 분 정도가 소요됩니다.Creating the SQL managed instance will take a few minutes to complete. 다음 명령을 사용하여 다른 터미널 창에서 진행률을 모니터링할 수 있습니다.You can monitor the progress in another terminal window with the following commands:

참고

아래의 예제 명령은 ‘sql1’이라는 이름의 SQL 관리형 인스턴스와 ‘arc’라는 이름의 Kubernetes 네임스페이스를 만들었다고 가정합니다.The example commands below assume that you created a SQL managed instance named 'sql1' and Kubernetes namespace with the name 'arc'. 다른 네임스페이스/SQL 관리형 인스턴스 이름을 사용하였다면, 그 이름들을 ‘arc’와 ‘sqlmi’ 대신 사용할 수 있습니다.If you used a different namespace/SQL managed instance name, you can replace 'arc' and 'sqlmi' with your names.

kubectl get sqlmi/sql1 --namespace arc
kubectl get pods --namespace arc

아래와 같은 명령을 실행하여 특정 Pod의 생성 상태를 확인할 수도 있습니다.You can also check on the creation status of any particular pod by running a command like below. 이 기능은 문제를 해결하는 데 특히 유용합니다.This is especially useful for troubleshooting any issues.

kubectl describe po/<pod name> --namespace arc

#Example:
#kubectl describe po/sql1-0 --namespace arc

생성 문제 해결Troubleshooting creation problems

생성과 관련한 문제가 발생하는 경우 문제 해결 가이드를 참조하세요.If you encounter any troubles with creation, please see the troubleshooting guide.

다음 단계Next steps

Azure Arc 지원 SQL Managed Instance에 연결하기Connect to Azure Arc enabled SQL Managed Instance