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:
|
ports:
|
||||||
- port: 443
|
- port: 443
|
||||||
targetPort: 8445
|
targetPort: 8445
|
||||||
|
type: LoadBalancer
|
||||||
---
|
---
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: ServiceAccount
|
kind: ServiceAccount
|
||||||
|
|
|
@ -11,7 +11,7 @@ webhooks:
|
||||||
apiVersions: [ "v1alpha1" ]
|
apiVersions: [ "v1alpha1" ]
|
||||||
kinds: [ "Workload" ]
|
kinds: [ "Workload" ]
|
||||||
clientConfig:
|
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}}
|
caBundle: {{caBundle}}
|
||||||
interpreterContextVersions: [ "v1alpha1" ]
|
interpreterContextVersions: [ "v1alpha1" ]
|
||||||
timeoutSeconds: 3
|
timeoutSeconds: 3
|
||||||
|
|
|
@ -112,6 +112,11 @@ function installCRDs() {
|
||||||
kubectl kustomize "${crd_path}"/_crds | kubectl apply -f -
|
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
|
# generate cert
|
||||||
util::cmd_must_exist "openssl"
|
util::cmd_must_exist "openssl"
|
||||||
util::cmd_must_exist_cfssl ${CFSSL_VERSION}
|
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}" server '"client auth","server auth"'
|
||||||
util::create_signing_certkey "" "${CERT_DIR}" front-proxy '"client auth","server auth"'
|
util::create_signing_certkey "" "${CERT_DIR}" front-proxy '"client auth","server auth"'
|
||||||
# signs a certificate
|
# 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"
|
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
|
# create namespace for control plane components
|
||||||
|
|
|
@ -20,6 +20,15 @@ export KUBECONFIG="${MAIN_KUBECONFIG}"
|
||||||
kubectl config use-context "${HOST_CLUSTER_NAME}"
|
kubectl config use-context "${HOST_CLUSTER_NAME}"
|
||||||
kubectl delete -f "${REPO_ROOT}"/examples/customresourceinterpreter/karmada-interpreter-webhook-example.yaml
|
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
|
# delete interpreter workload webhook configuration
|
||||||
kubectl config use-context "${KARMADA_APISERVER}"
|
kubectl config use-context "${KARMADA_APISERVER}"
|
||||||
kubectl delete ResourceInterpreterWebhookConfiguration examples
|
kubectl delete ResourceInterpreterWebhookConfiguration examples
|
||||||
|
|
|
@ -25,15 +25,51 @@ ROOT_CA_FILE=${CERT_DIR}/server-ca.crt
|
||||||
# load interpreter webhook example image
|
# load interpreter webhook example image
|
||||||
kind load docker-image "${REGISTRY}/karmada-interpreter-webhook-example:${VERSION}" --name="${HOST_CLUSTER_NAME}"
|
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}"
|
export KUBECONFIG="${MAIN_KUBECONFIG}"
|
||||||
kubectl config use-context "${HOST_CLUSTER_NAME}"
|
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
|
kubectl apply -f "${REPO_ROOT}"/examples/customresourceinterpreter/karmada-interpreter-webhook-example.yaml
|
||||||
util::wait_pod_ready "${INTERPRETER_WEBHOOK_EXAMPLE_LABEL}" "${KARMADA_SYSTEM_NAMESPACE}"
|
util::wait_pod_ready "${INTERPRETER_WEBHOOK_EXAMPLE_LABEL}" "${KARMADA_SYSTEM_NAMESPACE}"
|
||||||
|
|
||||||
# deploy interpreter workload webhook-configuration.yaml
|
# deploy interpreter workload webhook-configuration.yaml
|
||||||
kubectl config use-context "${KARMADA_APISERVER}"
|
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
|
# install interpreter example workload CRD in karamada-apiserver and member clusters
|
||||||
kubectl apply -f "${REPO_ROOT}/examples/customresourceinterpreter/apis/workload.example.io_workloads.yaml"
|
kubectl apply -f "${REPO_ROOT}/examples/customresourceinterpreter/apis/workload.example.io_workloads.yaml"
|
||||||
|
|
Loading…
Reference in New Issue