워크로드 생성에 앞서 워크로드에 대해 간단히 알아봅시다.
워크로드는 제어권을 기준으로 두 가지로 구분합니다.
서론은 여기까지로 하고 우리는 이중 무료 크래딧을 제공하는 Azure에 Managed Workload 생성해 봅시다.
https://learn.microsoft.com/ko-kr/cli/azure/install-azure-cli
# for Mac
➜ brew update && brew install azure-cli
# for Ubuntu
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
sudo apt install jq -y
https://capz.sigs.k8s.io/topics/getting-started
https://capz.sigs.k8s.io/topics/managedcluster
# Azure CLI를 사용하여 로그인합니다.
az login
# Azure resource를 등록합니다.
```bash
az provider register -n Microsoft.ContainerService
az provider register -n Microsoft.Compute
az provider register -n Microsoft.Network
az provider register -n Microsoft.ManagedIdentity
az provider register -n Microsoft.Authorization
az provider register -n Microsoft.ResourceHealth
# Azure 구독을 나열합니다.
az account list -o table
# 계정이 두 개 이상인 경우 사용하려는 계정을 선택하세요.
az account set -s <SubscriptionId>
# 구독 ID를 환경 변수에 저장하세요.
vi ~/.zshrc or ~/.bashrc
export AZURE_SUBSCRIPTION_ID="<SubscriptionId>"
export AZURE_TENANT_ID="<tenant>"
source ~/.zshrc
# 지역조회
az account list-locations --output table
vi ~/.zshrc or .bashrc
# -- azure
# Kubernetes values
export CLUSTER_NAME="az"
export WORKER_MACHINE_COUNT=1
export KUBERNETES_VERSION="v1.27.3"
# 관리형 클러스터에는 클러스터 API "MachinePool" 기능 플래그가 활성화되어 있어야 합니다.
export EXP_MACHINE_POOL=true
# 선택적으로 CAPZ “AKSResourceHealth” 기능 플래그도 활성화할 수 있습니다.
export EXP_AKS_RESOURCE_HEALTH=true
# Azure values
export AZURE_LOCATION="eastus2"
export AZURE_RESOURCE_GROUP="az"
source ~/.zshrc
# 새 서비스 주체를 만들고 로컬 파일에 저장합니다.
az ad sp create-for-rbac --role Contributor --scopes="/subscriptions/${AZURE_SUBSCRIPTION_ID}" --sdk-auth > sp.json
WARNING: Option '--sdk-auth' has been deprecated and will be removed in a future release.
WARNING: Creating 'Contributor' role assignment under scope '/subscriptions/78c4440c-2050-4d5a-93f3-e30263f35cd9'
WARNING: The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli
# 현재 셸에서 다음 변수를 내보냅니다.
export AZURE_SUBSCRIPTION_ID="$(cat sp.json | jq -r .subscriptionId | tr -d '\n')"
export AZURE_CLIENT_SECRET="$(cat sp.json | jq -r .clientSecret | tr -d '\n')"
export AZURE_CLIENT_ID="$(cat sp.json | jq -r .clientId | tr -d '\n')"
export AZURE_TENANT_ID="$(cat sp.json | jq -r .tenantId | tr -d '\n')"
export AZURE_NODE_MACHINE_TYPE="Standard_D2s_v3"
export AZURE_CLUSTER_IDENTITY_SECRET_NAME="cluster-identity-secret"
export AZURE_CLUSTER_IDENTITY_SECRET_NAMESPACE="default"
export CLUSTER_IDENTITY_NAME="cluster-identity"
# 관리 클러스터에서 ID 비밀을 생성합니다.
kubectl create secret generic "${AZURE_CLUSTER_IDENTITY_SECRET_NAME}" --from-literal=clientSecret="${AZURE_CLIENT_SECRET}"
# Clusterctl을 초기화합니다.
# clusterctl delete --all --include-crd --include-namespace
clusterctl init --infrastructure azure
# Clusterctl을 실행하여 리소스 템플릿을 만든 다음 관리 클러스터에 적용합니다.
clusterctl generate cluster ${CLUSTER_NAME} --kubernetes-version ${KUBERNETES_VERSION} --flavor aks > az-cluster.yaml
# assumes an existing management cluster
kubectl apply -f az-cluster.yaml
kubectl get cluster -w
kubectl get cluster-api -o wide
clusterctl describe --show-conditions all cluster az
kubectl logs deploy/capz-controller-manager -n capz-system manager
벌써 심플코스가 완료되었습니다.
생각보다 어렵지 않으셨으리라 생각합니다.
다음에 기회가 되면 커스텀이 가능한 버전의 중급 코스도 마련할 생각이니 기대(?)해 주세요 :)