Merge pull request #1676 from XiShanYongYe-Chang/install-metallb
Creating Loadbalancer Type Service by Installing the Metallb
This commit is contained in:
commit
ba0d7dc786
|
@ -63,6 +63,7 @@ spec:
|
|||
ports:
|
||||
- port: 443
|
||||
targetPort: 8445
|
||||
type: LoadBalancer
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
|
|
|
@ -11,7 +11,7 @@ webhooks:
|
|||
apiVersions: [ "v1alpha1" ]
|
||||
kinds: [ "Workload" ]
|
||||
clientConfig:
|
||||
url: https://karmada-interpreter-webhook-example.karmada-system.svc:443/interpreter-workload
|
||||
url: https://{{karmada-interpreter-webhook-example-svc-address}}:443/interpreter-workload
|
||||
caBundle: {{caBundle}}
|
||||
interpreterContextVersions: [ "v1alpha1" ]
|
||||
timeoutSeconds: 3
|
||||
|
|
|
@ -112,6 +112,11 @@ function installCRDs() {
|
|||
kubectl kustomize "${crd_path}"/_crds | kubectl apply -f -
|
||||
}
|
||||
|
||||
# Use x.x.x.6 IP address, which is the same CIDR with the node address of the Kind cluster,
|
||||
# as the loadBalancer service address of component karmada-interpreter-webhook-example.
|
||||
interpreter_webhook_example_service_external_ip_prefix=$(echo $(util::get_apiserver_ip_from_kubeconfig "${HOST_CLUSTER_NAME}") | awk -F. '{printf "%s.%s.%s",$1,$2,$3}')
|
||||
interpreter_webhook_example_service_external_ip_address=${interpreter_webhook_example_service_external_ip_prefix}.6
|
||||
|
||||
# generate cert
|
||||
util::cmd_must_exist "openssl"
|
||||
util::cmd_must_exist_cfssl ${CFSSL_VERSION}
|
||||
|
@ -119,7 +124,7 @@ util::cmd_must_exist_cfssl ${CFSSL_VERSION}
|
|||
util::create_signing_certkey "" "${CERT_DIR}" server '"client auth","server auth"'
|
||||
util::create_signing_certkey "" "${CERT_DIR}" front-proxy '"client auth","server auth"'
|
||||
# signs a certificate
|
||||
util::create_certkey "" "${CERT_DIR}" "server-ca" karmada system:admin kubernetes.default.svc "*.etcd.karmada-system.svc.cluster.local" "*.karmada-system.svc.cluster.local" "*.karmada-system.svc" "localhost" "127.0.0.1"
|
||||
util::create_certkey "" "${CERT_DIR}" "server-ca" karmada system:admin kubernetes.default.svc "*.etcd.karmada-system.svc.cluster.local" "*.karmada-system.svc.cluster.local" "*.karmada-system.svc" "localhost" "127.0.0.1" "${interpreter_webhook_example_service_external_ip_address}"
|
||||
util::create_certkey "" "${CERT_DIR}" "front-proxy-ca" front-proxy-client front-proxy-client kubernetes.default.svc "*.etcd.karmada-system.svc.cluster.local" "*.karmada-system.svc.cluster.local" "*.karmada-system.svc" "localhost" "127.0.0.1"
|
||||
|
||||
# create namespace for control plane components
|
||||
|
|
|
@ -20,6 +20,15 @@ export KUBECONFIG="${MAIN_KUBECONFIG}"
|
|||
kubectl config use-context "${HOST_CLUSTER_NAME}"
|
||||
kubectl delete -f "${REPO_ROOT}"/examples/customresourceinterpreter/karmada-interpreter-webhook-example.yaml
|
||||
|
||||
# uninstall metallb
|
||||
kubectl delete configmap config -n metallb-system
|
||||
kubectl delete -f https://raw.githubusercontent.com/metallb/metallb/v0.12.1/manifests/metallb.yaml
|
||||
kubectl delete -f https://raw.githubusercontent.com/metallb/metallb/v0.12.1/manifests/namespace.yaml
|
||||
|
||||
kubectl get configmap kube-proxy -n kube-system -o yaml | \
|
||||
sed -e "s/strictARP: true/strictARP: false/" | \
|
||||
kubectl apply -f - -n kube-system
|
||||
|
||||
# delete interpreter workload webhook configuration
|
||||
kubectl config use-context "${KARMADA_APISERVER}"
|
||||
kubectl delete ResourceInterpreterWebhookConfiguration examples
|
||||
|
|
|
@ -25,15 +25,51 @@ ROOT_CA_FILE=${CERT_DIR}/server-ca.crt
|
|||
# load interpreter webhook example image
|
||||
kind load docker-image "${REGISTRY}/karmada-interpreter-webhook-example:${VERSION}" --name="${HOST_CLUSTER_NAME}"
|
||||
|
||||
# deploy interpreter webhook example in karmada-host
|
||||
export KUBECONFIG="${MAIN_KUBECONFIG}"
|
||||
kubectl config use-context "${HOST_CLUSTER_NAME}"
|
||||
|
||||
# Due to we are using kube-proxy in IPVS mode, we have to enable strict ARP mode.
|
||||
# refer to https://metallb.universe.tf/installation/#preparation
|
||||
kubectl get configmap kube-proxy -n kube-system -o yaml | \
|
||||
sed -e "s/strictARP: false/strictARP: true/" | \
|
||||
kubectl apply -f - -n kube-system
|
||||
|
||||
# install metallb by manifest, refer to https://metallb.universe.tf/installation/#installation-by-manifest
|
||||
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.12.1/manifests/namespace.yaml
|
||||
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.12.1/manifests/metallb.yaml
|
||||
util::wait_pod_ready metallb metallb-system
|
||||
|
||||
# Use x.x.x.6 IP address, which is the same CIDR with the node address of the Kind cluster,
|
||||
# as the loadBalancer service address of component karmada-interpreter-webhook-example.
|
||||
interpreter_webhook_example_service_external_ip_prefix=$(echo $(util::get_apiserver_ip_from_kubeconfig "${HOST_CLUSTER_NAME}") | awk -F. '{printf "%s.%s.%s",$1,$2,$3}')
|
||||
interpreter_webhook_example_service_external_ip_address=${interpreter_webhook_example_service_external_ip_prefix}.6
|
||||
|
||||
# config with layer 2 configuration. refer to https://metallb.universe.tf/configuration/#layer-2-configuration
|
||||
cat <<EOF | kubectl apply -f -
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
namespace: metallb-system
|
||||
name: config
|
||||
data:
|
||||
config: |
|
||||
address-pools:
|
||||
- name: default
|
||||
protocol: layer2
|
||||
addresses:
|
||||
- ${interpreter_webhook_example_service_external_ip_address}-${interpreter_webhook_example_service_external_ip_address}
|
||||
EOF
|
||||
|
||||
# deploy interpreter webhook example in karmada-host
|
||||
kubectl apply -f "${REPO_ROOT}"/examples/customresourceinterpreter/karmada-interpreter-webhook-example.yaml
|
||||
util::wait_pod_ready "${INTERPRETER_WEBHOOK_EXAMPLE_LABEL}" "${KARMADA_SYSTEM_NAMESPACE}"
|
||||
|
||||
# deploy interpreter workload webhook-configuration.yaml
|
||||
kubectl config use-context "${KARMADA_APISERVER}"
|
||||
util::deploy_webhook_configuration "${ROOT_CA_FILE}" "${REPO_ROOT}/examples/customresourceinterpreter/webhook-configuration.yaml"
|
||||
cp -rf "${REPO_ROOT}/examples/customresourceinterpreter/webhook-configuration.yaml" "${REPO_ROOT}/examples/customresourceinterpreter/webhook-configuration-temp.yaml"
|
||||
sed -i'' -e "s/{{karmada-interpreter-webhook-example-svc-address}}/${interpreter_webhook_example_service_external_ip_address}/g" "${REPO_ROOT}/examples/customresourceinterpreter/webhook-configuration-temp.yaml"
|
||||
util::deploy_webhook_configuration "${ROOT_CA_FILE}" "${REPO_ROOT}/examples/customresourceinterpreter/webhook-configuration-temp.yaml"
|
||||
rm -rf "${REPO_ROOT}/examples/customresourceinterpreter/webhook-configuration-temp.yaml"
|
||||
|
||||
# install interpreter example workload CRD in karamada-apiserver and member clusters
|
||||
kubectl apply -f "${REPO_ROOT}/examples/customresourceinterpreter/apis/workload.example.io_workloads.yaml"
|
||||
|
|
Loading…
Reference in New Issue