Skip to content

Commit 1fa41cf

Browse files
committed
updates and tests to scripts
1 parent 037c15f commit 1fa41cf

File tree

3 files changed

+294
-14
lines changed

3 files changed

+294
-14
lines changed

README.md

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Slide Deck: https://www.slideshare.net/JorgeArteiro/manage-your-kubernetes-clust
66
Meetup reference: https://www.meetup.com/en-AU/Microsoft-Reactor-Sydney/events/279879195
77

88
Follow us at https://youtube.com/AzureTar , https://AzureTar.com and @AzureTar
9-
### Scripts are grouped the follwing way:
9+
### Scripts are grouped the following way:
1010

1111
(Dependencies) - All environment/installation scripts required.
1212

@@ -31,9 +31,21 @@ Follow us at https://youtube.com/AzureTar , https://AzureTar.com and @AzureTar
3131
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
3232
chmod 700 get_helm.sh
3333
./get_helm.sh
34+
35+
36+
### (Dependencies) Install/Update Extensions
37+
az extension list
38+
39+
az upgrade (to upgrade all installed extensions)
40+
41+
az extension add -n connectedk8s or az extension update -n connectedk8s
42+
43+
az extension add -n k8s-configuration or az extension update -n k8s-configuration
44+
45+
az extension add -n aks-preview or az extension update -n aks-preview
3446
### (Management Cluster) Create AKS - Azure Kubernetes Services to install Cluster API management
35-
Create Azure resource Group
36-
az group create -l australiaeast -n capi-controlplane
47+
Create Azure resource Group on eastus regions where GitOps preview is available
48+
az group create -l eastus -n capi-controlplane
3749

3850
Create Azure Kubernetes Services (Edit Script with your IDs)
3951
az aks create --resource-group capi-controlplane --name capi-controlplane \
@@ -42,27 +54,33 @@ Follow us at https://youtube.com/AzureTar , https://AzureTar.com and @AzureTar
4254
--enable-addons monitoring,azure-policy \
4355
--enable-managed-identity --generate-ssh-keys \
4456
--vm-set-type VirtualMachineScaleSets --zones 1 2 3 --load-balancer-sku standard \
45-
--attach-acr "<ACRResourceId>" \
4657
--enable-aad --aad-admin-group-object-ids "<AdminGroupObjectId>" \
47-
--workspace-resource-id "<LogAnalyticsWorkspaceResourceId>" \
4858
--max-pods 110 \
4959
--yes
5060

5161
### (Management Cluster) Get AKS Management Cluster .kubeconfig Credential. Config will be merged on the ~/.kube/config file
5262
az aks get-credentials --resource-group capi-controlplane --name capi-controlplane
5363

54-
kubectl get nodes
64+
kubectl get nodes (to test connection)
5565

5666
### (Management Cluster) Connect AKS control plane to Azure Arc
57-
az connectedk8s connect \
58-
--name capi-controlplane --resource-group capi-controlplane --location australiaeast
67+
az feature register --namespace Microsoft.ContainerService --name AKS-GitOps
5968

69+
az provider register --namespace Microsoft.ContainerService
70+
71+
az provider register --namespace Microsoft.KubernetesConfiguration
72+
73+
az feature show --namespace Microsoft.ContainerService --name AKS-GitOps (make sure it's Registered)
74+
75+
az aks enable-addons -a gitops -n capi-controlplane -g capi-controlplane
76+
77+
az connectedk8s connect --name capi-controlplane --resource-group capi-controlplane --location eastus
6078
### (Management Cluster) Add GitOps Configuration to deploy workload cluster from YAML files, --git-path=clusters
6179
az k8s-configuration create \
6280
--name capi-controlplane --cluster-name capi-controlplane --resource-group capi-controlplane \
6381
--operator-instance-name capi-controlplane --operator-namespace default \
6482
--repository-url https://github.com/azuretar/clusterapi-gitops \
65-
--scope cluster --cluster-type connectedClusters \
83+
--scope cluster --cluster-type managedClusters \
6684
--operator-params "--git-poll-interval 3s --git-readonly --git-path=clusters/ --git-branch main"
6785

6886
### (Workload cluster) Edit and Run arc_capi_azure.sh bash script to Initialize CAPI control plane and create workload cluster.
@@ -82,7 +100,7 @@ Follow us at https://youtube.com/AzureTar , https://AzureTar.com and @AzureTar
82100
Based on JumpStart https://azurearcjumpstart.io/azure_arc_jumpstart/azure_arc_k8s/cluster_api/capi_azure/
83101

84102
### (Workload cluster) Use --kubeconfig created by Init Script to connect the workload cluster
85-
kubectl --kubeconfig=./azuretar-reactor-1.kubeconfig get pods
103+
kubectl --kubeconfig=./azuretar-reactor-1.kubeconfig get pods -A
86104

87105
ps: do not push .kuconfig files to git repo. Please include *.kubeconfig in your .gitignore file
88106

@@ -94,11 +112,11 @@ Follow us at https://youtube.com/AzureTar , https://AzureTar.com and @AzureTar
94112
--scope cluster --cluster-type connectedClusters \
95113
--operator-params "--git-poll-interval 3s --git-readonly --git-path=workloads/ --git-branch main"
96114

115+
kubectl --kubeconfig=./azuretar-reactor-1.kubeconfig get pods -n default -w
97116
### (Workload cluster) Install Azure Arc Extension to Azure Monitoring from az cli
98117
az k8s-extension create --name azuremonitor-containers --cluster-name azuretar-reactor-1 \
99118
--resource-group azuretar-reactor-1 \
100-
--cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers \
101-
--configuration-settings logAnalyticsWorkspaceResourceID="<LogAnalyticsWorkspaceResourceId>"
119+
--cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers
102120

103121
### (General) Using clusterctl commands
104122
clusterctl describe cluster azuretar-reactor-1
@@ -107,7 +125,7 @@ Follow us at https://youtube.com/AzureTar , https://AzureTar.com and @AzureTar
107125

108126
kubectl get kubeadmcontrolplane --all-namespaces
109127

110-
kubectl delete cluster azuretar-reactor-1
128+
kubectl delete cluster azuretar-reactor-1 (to clean up resources)
111129

112130
### (Reference Links)
113131
https://github.com/azuretar/clusterapi-gitops
Lines changed: 262 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,262 @@
1+
apiVersion: cluster.x-k8s.io/v1alpha4
2+
kind: Cluster
3+
metadata:
4+
labels:
5+
cni: calico
6+
name: azuretar-reactor-1
7+
namespace: default
8+
spec:
9+
clusterNetwork:
10+
pods:
11+
cidrBlocks:
12+
- 192.168.0.0/16
13+
controlPlaneRef:
14+
apiVersion: controlplane.cluster.x-k8s.io/v1alpha4
15+
kind: KubeadmControlPlane
16+
name: azuretar-reactor-1-control-plane
17+
infrastructureRef:
18+
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
19+
kind: AzureCluster
20+
name: azuretar-reactor-1
21+
---
22+
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
23+
kind: AzureCluster
24+
metadata:
25+
name: azuretar-reactor-1
26+
namespace: default
27+
spec:
28+
identityRef:
29+
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
30+
kind: AzureClusterIdentity
31+
name: cluster-identity
32+
location: eastus
33+
networkSpec:
34+
vnet:
35+
name: azuretar-reactor-1-vnet
36+
cidrBlocks:
37+
- 10.0.0.0/16
38+
subnets:
39+
- name: azuretar-reactor-1-subnet-cp
40+
role: control-plane
41+
cidrBlocks:
42+
- 10.0.1.0/24
43+
securityGroup:
44+
name: azuretar-reactor-1-controlplane-nsg
45+
securityRules:
46+
- name: "allow_apiserver"
47+
description: "Allow K8s API Server"
48+
direction: "Inbound"
49+
priority: 2202
50+
protocol: "*"
51+
destination: "*"
52+
destinationPorts: "6443"
53+
source: "*"
54+
sourcePorts: "*"
55+
- name: azuretar-reactor-1-subnet-node
56+
role: node
57+
cidrBlocks:
58+
- 10.0.2.0/24
59+
resourceGroup: azuretar-reactor-1
60+
subscriptionID: 9daa1df0-9df4-4afc-88d0-544a7f4e3cb9
61+
---
62+
apiVersion: controlplane.cluster.x-k8s.io/v1alpha4
63+
kind: KubeadmControlPlane
64+
metadata:
65+
name: azuretar-reactor-1-control-plane
66+
namespace: default
67+
spec:
68+
kubeadmConfigSpec:
69+
clusterConfiguration:
70+
apiServer:
71+
extraArgs:
72+
audit-log-maxage: "30"
73+
audit-log-maxbackup: "10"
74+
audit-log-maxsize: "100"
75+
audit-log-path: /var/log/kube-apiserver/audit.log
76+
audit-policy-file: /etc/kubernetes/audit.yaml
77+
cloud-config: /etc/kubernetes/azure.json
78+
cloud-provider: azure
79+
extraVolumes:
80+
- hostPath: /var/log/kube-apiserver
81+
mountPath: /var/log/kube-apiserver
82+
name: kubeaudit
83+
- hostPath: /etc/kubernetes/audit.yaml
84+
mountPath: /etc/kubernetes/audit.yaml
85+
name: audit-policy
86+
readOnly: true
87+
- hostPath: /etc/kubernetes/azure.json
88+
mountPath: /etc/kubernetes/azure.json
89+
name: cloud-config
90+
readOnly: true
91+
timeoutForControlPlane: 20m
92+
controllerManager:
93+
extraArgs:
94+
allocate-node-cidrs: "false"
95+
cloud-config: /etc/kubernetes/azure.json
96+
cloud-provider: azure
97+
cluster-name: azuretar-reactor-1
98+
extraVolumes:
99+
- hostPath: /etc/kubernetes/azure.json
100+
mountPath: /etc/kubernetes/azure.json
101+
name: cloud-config
102+
readOnly: true
103+
etcd:
104+
local:
105+
dataDir: /var/lib/etcddisk/etcd
106+
extraArgs:
107+
quota-backend-bytes: "8589934592"
108+
diskSetup:
109+
filesystems:
110+
- device: /dev/disk/azure/scsi1/lun0
111+
extraOpts:
112+
- -E
113+
- lazy_itable_init=1,lazy_journal_init=1
114+
filesystem: ext4
115+
label: etcd_disk
116+
- device: ephemeral0.1
117+
filesystem: ext4
118+
label: ephemeral0
119+
replaceFS: ntfs
120+
partitions:
121+
- device: /dev/disk/azure/scsi1/lun0
122+
layout: true
123+
overwrite: false
124+
tableType: gpt
125+
files:
126+
- contentFrom:
127+
secret:
128+
key: control-plane-azure.json
129+
name: azuretar-reactor-1-control-plane-azure-json
130+
owner: root:root
131+
path: /etc/kubernetes/azure.json
132+
permissions: "0644"
133+
- contentFrom:
134+
secret:
135+
key: audit.yaml
136+
name: audit
137+
owner: root:root
138+
path: /etc/kubernetes/audit.yaml
139+
permissions: "0644"
140+
initConfiguration:
141+
nodeRegistration:
142+
kubeletExtraArgs:
143+
azure-container-registry-config: /etc/kubernetes/azure.json
144+
cloud-config: /etc/kubernetes/azure.json
145+
cloud-provider: azure
146+
name: '{{ ds.meta_data["local_hostname"] }}'
147+
joinConfiguration:
148+
nodeRegistration:
149+
kubeletExtraArgs:
150+
azure-container-registry-config: /etc/kubernetes/azure.json
151+
cloud-config: /etc/kubernetes/azure.json
152+
cloud-provider: azure
153+
name: '{{ ds.meta_data["local_hostname"] }}'
154+
mounts:
155+
- - LABEL=etcd_disk
156+
- /var/lib/etcddisk
157+
postKubeadmCommands: []
158+
preKubeadmCommands: []
159+
machineTemplate:
160+
infrastructureRef:
161+
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
162+
kind: AzureMachineTemplate
163+
name: azuretar-reactor-1-control-plane
164+
replicas: 1
165+
version: v1.20.10
166+
---
167+
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
168+
kind: AzureMachineTemplate
169+
metadata:
170+
name: azuretar-reactor-1-control-plane
171+
namespace: default
172+
spec:
173+
template:
174+
spec:
175+
dataDisks:
176+
- diskSizeGB: 256
177+
lun: 0
178+
nameSuffix: etcddisk
179+
osDisk:
180+
diskSizeGB: 128
181+
osType: Linux
182+
sshPublicKey: ""
183+
vmSize: Standard_D2s_v3
184+
---
185+
apiVersion: cluster.x-k8s.io/v1alpha4
186+
kind: MachineDeployment
187+
metadata:
188+
name: azuretar-reactor-1-md-0
189+
namespace: default
190+
spec:
191+
clusterName: azuretar-reactor-1
192+
replicas: 1
193+
selector:
194+
matchLabels: null
195+
template:
196+
spec:
197+
bootstrap:
198+
configRef:
199+
apiVersion: bootstrap.cluster.x-k8s.io/v1alpha4
200+
kind: KubeadmConfigTemplate
201+
name: azuretar-reactor-1-md-0
202+
clusterName: azuretar-reactor-1
203+
infrastructureRef:
204+
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
205+
kind: AzureMachineTemplate
206+
name: azuretar-reactor-1-md-0
207+
version: v1.20.10
208+
---
209+
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
210+
kind: AzureMachineTemplate
211+
metadata:
212+
name: azuretar-reactor-1-md-0
213+
namespace: default
214+
spec:
215+
template:
216+
spec:
217+
osDisk:
218+
diskSizeGB: 128
219+
osType: Linux
220+
sshPublicKey: ""
221+
vmSize: Standard_D2s_v3
222+
---
223+
apiVersion: bootstrap.cluster.x-k8s.io/v1alpha4
224+
kind: KubeadmConfigTemplate
225+
metadata:
226+
name: azuretar-reactor-1-md-0
227+
namespace: default
228+
spec:
229+
template:
230+
spec:
231+
files:
232+
- contentFrom:
233+
secret:
234+
key: worker-node-azure.json
235+
name: azuretar-reactor-1-md-0-azure-json
236+
owner: root:root
237+
path: /etc/kubernetes/azure.json
238+
permissions: "0644"
239+
joinConfiguration:
240+
nodeRegistration:
241+
kubeletExtraArgs:
242+
azure-container-registry-config: /etc/kubernetes/azure.json
243+
cloud-config: /etc/kubernetes/azure.json
244+
cloud-provider: azure
245+
name: '{{ ds.meta_data["local_hostname"] }}'
246+
preKubeadmCommands: []
247+
---
248+
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
249+
kind: AzureClusterIdentity
250+
metadata:
251+
labels:
252+
clusterctl.cluster.x-k8s.io/move-hierarchy: "true"
253+
name: cluster-identity
254+
namespace: default
255+
spec:
256+
allowedNamespaces: {}
257+
clientID: 7472d9ca-3081-48eb-9976-73cd7e288e33
258+
clientSecret:
259+
name: cluster-identity-secret
260+
namespace: default
261+
tenantID: 72f988bf-86f1-41af-91ab-2d7cd011db47
262+
type: ServicePrincipal

init/arc_capi_azure.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export AZURE_ENVIRONMENT="AzurePublicCloud" # Do not change!
2929
export KUBERNETES_VERSION="1.20.10" # Do not change!
3030
export CONTROL_PLANE_MACHINE_COUNT="1"
3131
export WORKER_MACHINE_COUNT="1"
32-
export AZURE_LOCATION="australiaeast" # Name of the Azure datacenter location. For example: "eastus"
32+
export AZURE_LOCATION="eastus" # Name of the Azure datacenter location. For example: "eastus"
3333
export AZURE_CONTROL_PLANE_MACHINE_TYPE="Standard_D2s_v3" # For example: "Standard_D2s_v3"
3434
export AZURE_NODE_MACHINE_TYPE="Standard_D2s_v3" # For example: "Standard_D4s_v3"
3535

0 commit comments

Comments
 (0)