Acara
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarangBrowser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
Akun Layanan Terkelola Grup (GMSA) adalah akun domain terkelola untuk beberapa server yang menyediakan manajemen kata sandi otomatis, manajemen nama prinsipal layanan (SPN) yang disederhanakan, dan kemampuan untuk mendelegasikan manajemen kepada administrator lain. Dengan Azure Kubernetes Service (AKS), Anda dapat mengaktifkan GMSA pada simpul Windows Server, yang memungkinkan kontainer yang berjalan pada simpul Windows Server untuk diintegrasikan dengan dan dikelola oleh GMSA.
az --version
untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.Catatan
Microsoft juga menyediakan modul PowerShell yang dibuat khusus untuk mengonfigurasi gMSA di AKS. Untuk informasi selengkapnya, lihat gMSA di Azure Kubernetes Service.
Untuk menggunakan GMSA dengan AKS, Anda memerlukan kredensial pengguna domain standar untuk mengakses kredensial GMSA yang dikonfigurasi pada pengendali domain Anda. Untuk mengonfigurasi GMSA di pengendali domain Anda, lihat Mulai menggunakan Akun Layanan Terkelola Grup. Untuk kredensial pengguna domain standar, Anda dapat menggunakan pengguna yang sudah ada atau membuat yang baru, selama pengguna tersebut memiliki akses ke kredensial GMSA.
Penting
Anda harus menggunakan Layanan Domain Direktori Aktif atau Active Directory lokal. Saat ini, Anda tidak dapat menggunakan Microsoft Entra ID untuk mengonfigurasi GMSA dengan kluster AKS.
Kluster AKS Anda menggunakan kredensial pengguna domain standar untuk mengakses kredensial GMSA dari pengendali domain. Untuk menyediakan akses aman ke kredensial tersebut untuk kluster AKS, Anda harus menyimpannya di Azure Key Vault.
Jika Anda belum memiliki brankas kunci Azure, buat brankas kunci menggunakan az keyvault create
perintah .
az keyvault create --resource-group myResourceGroup --name myGMSAVault
Simpan kredensial pengguna domain standar sebagai rahasia di brankas kunci Anda menggunakan az keyvault secret set
perintah . Contoh berikut menyimpan info masuk pengguna domain dengan kunci GMSADomainUserCred di brankas kunci myGMSAVault .
az keyvault secret set --vault-name myGMSAVault --name "GMSADomainUserCred" --value "$Domain\\$DomainUsername:$DomainUserPassword"
Catatan
Pastikan untuk menggunakan Nama Domain yang Sepenuhnya Memenuhi Syarat untuk domain.
Anda perlu mengonfigurasi pengendali domain Anda melalui DNS sehingga dapat dijangkau oleh kluster AKS. Anda dapat mengonfigurasi jaringan dan DNS Anda di luar kluster AKS agar kluster Anda dapat mengakses pengendali domain. Atau, Anda dapat menggunakan Azure CNI untuk mengonfigurasi VNet kustom dengan DNS kustom di kluster AKS Anda untuk menyediakan akses ke pengontrol domain Anda. Untuk informasi selengkapnya, lihat Mengonfigurasi jaringan Azure CNI di Azure Kubernetes Service (AKS).
Jika Anda ingin mengonfigurasi lebih dari satu server DNS untuk Windows GMSA di kluster AKS Anda, jangan tentukan --gmsa-dns-server
atau v--gmsa-root-domain-name
. Sebagai gantinya, Anda bisa menambahkan beberapa server DNS di VNet dengan memilih DNS Kustom dan menambahkan server DNS.
Untuk menyediakan akses kluster AKS ke brankas kunci, identitas kubelet kluster memerlukan akses ke brankas kunci Anda. Saat Anda membuat kluster dengan identitas terkelola diaktifkan, identitas kubelet secara otomatis dibuat secara default.
Anda dapat memberikan akses ke brankas kunci untuk identitas setelah pembuatan kluster atau membuat identitas Anda sendiri untuk digunakan sebelum pembuatan kluster menggunakan langkah-langkah berikut:
Buat identitas kubelet menggunakan az identity create
perintah .
az identity create --name myIdentity --resource-group myResourceGroup
Dapatkan ID identitas menggunakan az identity list
perintah dan atur ke variabel bernama MANAGED_ID.
MANAGED_ID=$(az identity list --query "[].id" -o tsv)
Berikan akses identitas ke brankas kunci Anda menggunakan az keyvault set-policy
perintah .
az keyvault set-policy --name "myGMSAVault" --object-id $MANAGED_ID --secret-permissions get
Buat kredensial administrator untuk digunakan selama pembuatan kluster. Perintah berikut meminta nama pengguna dan mengaturnya ke WINDOWS_USERNAME untuk digunakan dalam perintah selanjutnya.
echo "Please enter the username to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_USERNAME
Buat kluster AKS menggunakan az aks create
perintah dengan parameter berikut:
--enable-windows-gmsa
: Mengaktifkan GMSA untuk kluster.--gmsa-dns-server
: Alamat IP server DNS.--gmsa-root-domain-name
: Nama domain akar server DNS.DNS_SERVER=<IP address of DNS server>
ROOT_DOMAIN_NAME="contoso.com"
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--vm-set-type VirtualMachineScaleSets \
--network-plugin azure \
--load-balancer-sku standard \
--windows-admin-username $WINDOWS_USERNAME \
--enable-windows-gmsa \
--gmsa-dns-server $DNS_SERVER \
--gmsa-root-domain-name $ROOT_DOMAIN_NAME \
--generate-ssh-keys
Catatan
Jika Anda menggunakan VNet kustom, Anda perlu menentukan ID VNet menggunakan vnet-subnet-id
parameter , dan Anda mungkin juga perlu menambahkan docker-bridge-address
parameter , dns-service-ip
, dan service-cidr
tergantung pada konfigurasi Anda.
Jika Anda membuat identitas Anda sendiri untuk identitas kubelet, gunakan assign-kubelet-identity
parameter untuk menentukan identitas Anda.
Saat Anda menentukan --gmsa-dns-server
parameter dan --gmsa-root-domain-name
, aturan penerusan DNS ditambahkan ke kube-system/coredns
ConfigMap. Aturan ini meneruskan permintaan DNS untuk $ROOT_DOMAIN_NAME
dari pod ke $DNS_SERVER
.
$ROOT_DOMAIN_NAME:53 {
errors
cache 30
log
forward . $DNS_SERVER
}
Tambahkan kumpulan simpul Windows Server menggunakan az aks nodepool add
perintah .
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--os-type Windows \
--name npwin \
--node-count 1
Aktifkan GMSA pada kluster yang ada dengan simpul Windows Server dan identitas terkelola diaktifkan menggunakan az aks update
perintah .
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--enable-windows-gmsa \
--gmsa-dns-server $DNS_SERVER \
--gmsa-root-domain-name $ROOT_DOMAIN_NAME
Catatan
Lewati langkah ini jika Anda memberikan identitas Anda sendiri untuk identitas kubelet.
Berikan akses ke brankas kunci Anda untuk identitas kubelet menggunakan az keyvault set-policy
perintah .
MANAGED_ID=$(az aks show -g myResourceGroup -n myAKSCluster --query "identityProfile.kubeletidentity.objectId" -o tsv)
az keyvault set-policy --name "myGMSAVault" --object-id $MANAGED_ID --secret-permissions get
Konfigurasikan kubectl
untuk terhubung ke kluster Kubernetes menggunakan perintah az aks get-credentials
.
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Buat YAML baru bernama gmsa-spec.yaml dan tempelkan di YAML berikut. Pastikan Anda mengganti tempat penampung dengan nilai Anda sendiri.
apiVersion: windows.k8s.io/v1
kind: GMSACredentialSpec
metadata:
name: aks-gmsa-spec # This name can be changed, but it will be used as a reference in the pod spec
credspec:
ActiveDirectoryConfig:
GroupManagedServiceAccounts:
- Name: $GMSA_ACCOUNT_USERNAME
Scope: $NETBIOS_DOMAIN_NAME
- Name: $GMSA_ACCOUNT_USERNAME
Scope: $DNS_DOMAIN_NAME
HostAccountConfig:
PluginGUID: '{CCC2A336-D7F3-4818-A213-272B7924213E}'
PortableCcgVersion: "1"
PluginInput: "ObjectId=$MANAGED_ID;SecretUri=$SECRET_URI" # SECRET_URI takes the form https://$akvName.vault.azure.net/secrets/$akvSecretName
CmsPlugins:
- ActiveDirectory
DomainJoinConfig:
DnsName: $DNS_DOMAIN_NAME
DnsTreeName: $DNS_ROOT_DOMAIN_NAME
Guid: $AD_DOMAIN_OBJECT_GUID
MachineAccountName: $GMSA_ACCOUNT_USERNAME
NetBiosName: $NETBIOS_DOMAIN_NAME
Sid: $GMSA_SID
Catatan
AKS telah meningkatkan apiVersion
dari GMSACredentialSpec
windows.k8s.io/v1alpha1
ke windows.k8s.io/v1
dalam rilis v20230903.
Buat YAML baru bernama gmsa-role.yaml dan tempelkan di YAML berikut.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: aks-gmsa-role
rules:
- apiGroups: ["windows.k8s.io"]
resources: ["gmsacredentialspecs"]
verbs: ["use"]
resourceNames: ["aks-gmsa-spec"]
Buat YAML baru bernama gmsa-role-binding.yaml dan tempelkan di YAML berikut.
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: allow-default-svc-account-read-on-aks-gmsa-spec
namespace: default
subjects:
- kind: ServiceAccount
name: default
namespace: default
roleRef:
kind: ClusterRole
name: aks-gmsa-role
apiGroup: rbac.authorization.k8s.io
Terapkan perubahan dari gmsa-spec.yaml, gmsa-role.yaml, dan gmsa-role-binding.yaml menggunakan kubectl apply
perintah .
kubectl apply -f gmsa-spec.yaml
kubectl apply -f gmsa-role.yaml
kubectl apply -f gmsa-role-binding.yaml
Buat YAML baru bernama gmsa-demo.yaml dan tempelkan di YAML berikut.
---
kind: ConfigMap
apiVersion: v1
metadata:
labels:
app: gmsa-demo
name: gmsa-demo
namespace: default
data:
run.ps1: |
$ErrorActionPreference = "Stop"
Write-Output "Configuring IIS with authentication."
# Add required Windows features, since they are not installed by default.
Install-WindowsFeature "Web-Windows-Auth", "Web-Asp-Net45"
# Create simple ASP.NET page.
New-Item -Force -ItemType Directory -Path 'C:\inetpub\wwwroot\app'
Set-Content -Path 'C:\inetpub\wwwroot\app\default.aspx' -Value 'Authenticated as <B><%=User.Identity.Name%></B>, Type of Authentication: <B><%=User.Identity.AuthenticationType%></B>'
# Configure IIS with authentication.
Import-Module IISAdministration
Start-IISCommitDelay
(Get-IISConfigSection -SectionPath 'system.webServer/security/authentication/windowsAuthentication').Attributes['enabled'].value = $true
(Get-IISConfigSection -SectionPath 'system.webServer/security/authentication/anonymousAuthentication').Attributes['enabled'].value = $false
(Get-IISServerManager).Sites[0].Applications[0].VirtualDirectories[0].PhysicalPath = 'C:\inetpub\wwwroot\app'
Stop-IISCommitDelay
Write-Output "IIS with authentication is ready."
C:\ServiceMonitor.exe w3svc
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: gmsa-demo
name: gmsa-demo
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: gmsa-demo
template:
metadata:
labels:
app: gmsa-demo
spec:
securityContext:
windowsOptions:
gmsaCredentialSpecName: aks-gmsa-spec
containers:
- name: iis
image: mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019
imagePullPolicy: IfNotPresent
command:
- powershell
args:
- -File
- /gmsa-demo/run.ps1
volumeMounts:
- name: gmsa-demo
mountPath: /gmsa-demo
volumes:
- configMap:
defaultMode: 420
name: gmsa-demo
name: gmsa-demo
nodeSelector:
kubernetes.io/os: windows
---
apiVersion: v1
kind: Service
metadata:
labels:
app: gmsa-demo
name: gmsa-demo
namespace: default
spec:
ports:
- port: 80
targetPort: 80
selector:
app: gmsa-demo
type: LoadBalancer
Terapkan perubahan dari gmsa-demo.yaml menggunakan kubectl apply
perintah .
kubectl apply -f gmsa-demo.yaml
Dapatkan alamat IP aplikasi sampel menggunakan kubectl get service
perintah .
kubectl get service gmsa-demo --watch
Awalnya, EXTERNAL-IP
untuk gmsa-demo
layanan ditampilkan sebagai tertunda:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
gmsa-demo LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
EXTERNAL-IP
Ketika alamat berubah dari tertunda ke alamat IP publik aktual, gunakan CTRL-C
untuk menghentikan kubectl
proses tontonan.
Output contoh berikut menunjukkan alamat IP publik yang valid yang ditetapkan ke layanan:
gmsa-demo LoadBalancer 10.0.37.27 EXTERNAL-IP 80:30572/TCP 2m
Buka browser web ke alamat gmsa-demo
IP eksternal layanan.
Autentikasi dengan $NETBIOS_DOMAIN_NAME\$AD_USERNAME
kata sandi dan konfirmasikan Anda melihat Authenticated as $NETBIOS_DOMAIN_NAME\$AD_USERNAME, Type of Authentication: Negotiate
.
Nonaktifkan GMSA pada kluster yang ada dengan simpul Windows Server menggunakan az aks update
perintah .
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--disable-windows-gmsa
Catatan
Anda dapat mengaktifkan kembali GMSA pada kluster yang ada dengan menggunakan perintah az aks update .
Jika halaman dimuat, tetapi Anda tidak diminta untuk mengautentikasi, gunakan kubectl logs POD_NAME
perintah untuk menampilkan log pod Anda dan verifikasi bahwa Anda melihat IIS dengan autentikasi siap.
Catatan
Kontainer Windows tidak akan menampilkan log pada kubectl secara default. Untuk mengaktifkan kontainer Windows untuk menampilkan log, Anda perlu menyematkan alat Monitor Log pada citra Windows Anda. Untuk informasi selengkapnya, lihat Alat Kontainer Windows.
Jika Anda menerima batas waktu koneksi saat mencoba memuat halaman, verifikasi aplikasi sampel berjalan menggunakan kubectl get pods --watch
perintah . Terkadang alamat IP eksternal untuk layanan aplikasi contoh tersedia sebelum pod aplikasi contoh berjalan.
Jika pod Anda tidak dimulai setelah menjalankan kubectl get pods --watch
perintah dan menunggu beberapa menit, gunakan kubectl describe pod POD_NAME
perintah . Jika Anda melihat kesalahan winapi dalam peristiwa pod, kemungkinan kesalahan dalam konfigurasi spesifikasi kredensial GMSA Anda. Pastikan semua nilai pengganti di gmsa-spec.yaml sudah benar, jalankan kembali kubectl apply -f gmsa-spec.yaml
, dan sebarkan ulang aplikasi contoh.
Untuk informasi selengkapnya, lihat Pertimbangan kontainer Windows dengan Azure Kubernetes Service (AKS).
Umpan balik Azure Kubernetes Service
Azure Kubernetes Service adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik:
Acara
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarangPelatihan
Modul
Proyek Terpandu - Menyebarkan aplikasi ke Azure Kubernetes Service - Training
Selamat datang di pengalaman validasi keterampilan interaktif ini. Menyelesaikan modul ini membantu mempersiapkan Anda untuk Menyebarkan dan mengelola kontainer dengan penilaian Azure Kubernetes Service.
Sertifikasi
Microsoft Certified: Identitas dan Akses Administrator Associate - Certifications
Menunjukkan fitur ID Microsoft Entra untuk memodernisasi solusi identitas, menerapkan solusi hibrid, dan menerapkan tata kelola identitas.