Multi Cluster Best Effort
On vSphere
Cloud Provider Interface is VMware vSphere
Pre
1.
Kubernetes
a.
HAproxy
b.
Master 3EA
c.
Node 5EA
2.
Cloud Provider
a.
VMware vSphere
3.
CLI
a.
kubectl
b.
helm
c.
clusterctl
START
•
VMware Cloud Provider를 위한 환경구성
# Cluster API Path : ~/.cluster-api/clusterctl.yaml
## -- Controller settings -- ##
VSPHERE_USERNAME: "altair"
VSPHERE_PASSWORD: "Megazone00!"
## -- Required workload cluster default settings -- ##
VSPHERE_SERVER: "vcsa01.ama.local"
VSPHERE_DATACENTER: "AMA DC"
VSPHERE_DATASTORE: "vsanDatastore"
VSPHERE_NETWORK: "Service PG_vlan3201"
VSPHERE_RESOURCE_POOL: "99-Workload"
VSPHERE_FOLDER: "Altair"
VSPHERE_TEMPLATE: "ubuntu-2204-kube-v1.28.0"
CONTROL_PLANE_ENDPOINT_IP: "30.20.1.241"
VIP_NETWORK_INTERFACE: "ens192"
VSPHERE_TLS_THUMBPRINT: "7E:3E:5F:75:43:A9:1B:96:49:E6:88:3A:3B:AD:7C:97:03:51:2C:53"
EXP_CLUSTER_RESOURCE_SET: "true"
VSPHERE_SSH_AUTHORIZED_KEY: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCxM/cNmXnjWV87tRC/ySC22Ng/CA5jx79LR/A38i+lERQ1jbg+3G1OOfzxNyNscQylBpmMV0xJ2POelm8yYGlbjge5IA4y8Fqjh3nUwvk8HDcw2rg6O6FWNnQSBd9mO6I5np1hV+RptSzL2RxihxoRDVDqQxlAcjFQsYs6gSUSES/iWywQxdsOsyCO5KwSxVvSxYNbkswzReEllOW6jb5I1btU7jAAV9Hmc9Fvcz1S0jNeK4K7u7ic7kJ4t1q4dkImmFYHM7C+/RBNHDr+IX2YhAhWBPyJx3gZ6X/dkg1Hb34KTVaXKtWcjLFiQA7fd6leWG9eAqPgy6juDsVYZiLXOozONacOLFibFcUcy09w440reesxZXLx7q9uVyTcHXON4IhhxVuj8+XldRdJEQ+dxs9onhME4+PwUyLX5auWjDaHakofCZS9g2mQNtxPEfSc9SaYltRzDtqDUatUwPOPl9ir4Xc/+DaZWFuaT2pMG8tSmY0B9GtKCngXkJ7nId8= root@server"
VSPHERE_STORAGE_POLICY: "tkg-csi"
CPI_IMAGE_K8S_VERSION: "v1.28.0"
Shell
복사
•
CAPI / CAPV 구성요소 설치
# Install
clusterctl init -i vsphere -v 6
Using configuration File="/root/.cluster-api/clusterctl.yaml"
Fetching providers
Fetching File="infrastructure-components.yaml" Provider="vsphere" Type="InfrastructureProvider" Version="v1.8.7"
Fetching File="metadata.yaml" Provider="cluster-api" Type="CoreProvider" Version="v1.6.0"
Creating Namespace="cert-manager-test"
Creating Issuer="test-selfsigned" Namespace="cert-manager-test"
Creating Certificate="selfsigned-cert" Namespace="cert-manager-test"
Deleting Namespace="cert-manager-test"
Deleting Issuer="test-selfsigned" Namespace="cert-manager-test"
Deleting Certificate="selfsigned-cert" Namespace="cert-manager-test"
Skipping installing cert-manager as it is already installed
Using configuration File="/root/.cluster-api/clusterctl.yaml"
Shell
복사
•
Workload Template 생성
clusterctl generate cluster workload-01 \
--kubernetes-version=1.28.4 \
--control-plane-machine-count 3 \
--worker-machine-count 3 \
-v 6 > workload-01.yaml
Shell
복사
workload-01.yaml
kubectl apply -f workload-01.yaml
YAML
복사
ClusterResourceSet
이 전까지 진행 할 시에 클러스터 생성이 되지만 CNI 는 설치가 안되어 있음.
따라서, 클러스터 생성 이 후 설치하거나 ClusterResourceSet 으로 바인딩하여 설치해야한다.
•
구성 파일 가져오기
curl -L https://docs.projectcalico.org/manifests/calico.yaml -o calico.yaml
Bash
복사
•
해당 구성파일로 Configmap 만들기
kubectl create configmap calico-configmap \
--from-file=calico.yaml \
-o yaml \
--dry-run=client > calico-configmap.yaml
# 적용
kubectl apply -f calico-configmap.yaml
Bash
복사
•
ClusterResourceSet 적용
---
apiVersion: addons.cluster.x-k8s.io/v1alpha3
kind: ClusterResourceSet
metadata:
name: calico
spec:
clusterSelector:
matchLabels:
cni: calico ## 이 분으로 Binding 됨
resources:
- kind: ConfigMap
name: calico-configmap
# 적용
YAML
복사
•
Cluster에 적용
apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
name: cluster-50
labels:
cni: calico ## 라벨로 적용
YAML
복사