From b2d11cf4fd47c684a4ffd989082cdf5a95e0e0ef Mon Sep 17 00:00:00 2001 From: linxin Date: Wed, 13 Mar 2024 17:46:15 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9E=20fix:TSG-17491=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=90=AF=E7=94=A8update-coredns-forwarding=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=90=8E=EF=BC=8C=E6=9C=89=E4=B8=80=E5=AE=9A=E6=A6=82?= =?UTF-8?q?=E7=8E=87k3s=E6=97=A0=E6=B3=95=E5=9C=A8=E8=BE=83=E7=9F=AD?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E5=86=85=E5=90=AF=E5=8A=A8=EF=BC=8C=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E5=8F=8D=E5=A4=8D=E9=87=8D=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../k3s-install/files/coredns-custom.yaml | 8 ++++++++ .../files/update-coredns-forwarding.sh | 20 +++++++++---------- ansible/roles/k3s-install/tasks/main.yml | 7 ++++++- 3 files changed, 23 insertions(+), 12 deletions(-) create mode 100644 ansible/roles/k3s-install/files/coredns-custom.yaml diff --git a/ansible/roles/k3s-install/files/coredns-custom.yaml b/ansible/roles/k3s-install/files/coredns-custom.yaml new file mode 100644 index 00000000..2065b9ce --- /dev/null +++ b/ansible/roles/k3s-install/files/coredns-custom.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: coredns-custom + namespace: kube-system +data: + forward.override: | + forward . /etc/resolv.conf \ No newline at end of file diff --git a/ansible/roles/k3s-install/files/update-coredns-forwarding.sh b/ansible/roles/k3s-install/files/update-coredns-forwarding.sh index 6538bd4a..dfe479ab 100644 --- a/ansible/roles/k3s-install/files/update-coredns-forwarding.sh +++ b/ansible/roles/k3s-install/files/update-coredns-forwarding.sh @@ -5,7 +5,7 @@ set -eufo pipefail readonly CONTAINERD_SOCK='/run/k3s/containerd/containerd.sock' # The absolute path to the CoreDNS manifest file. -readonly COREDNS_YAML='/var/lib/rancher/k3s/server/manifests/coredns.yaml' +readonly COREDNS_YAML='/var/lib/rancher/k3s/server/manifests/coredns-custom.yaml' get_file_mtime() { # Get file "$1" mtime in Epoch seconds. @@ -19,13 +19,6 @@ wait_for_file() { done } -wait_for_newer_mtime() { - # Wait for file "$1" to have newer mtime than file "$2". - until [[ $(get_file_mtime "$1") -gt $(get_file_mtime "$2") ]]; do - sleep 1 - done -} - get_nameservers() { # Get a list of DNS nameservers defined in /etc/resolv.conf. if [[ -e /etc/resolv.conf ]]; then @@ -35,6 +28,8 @@ get_nameservers() { restart_coredns_deployment() { # Restart the CoreDNS deployment. + kubectl --kubeconfig /etc/rancher/k3s/k3s.yaml \ + apply -f $COREDNS_YAML kubectl --kubeconfig /etc/rancher/k3s/k3s.yaml --namespace kube-system \ rollout restart deployment coredns } @@ -47,7 +42,11 @@ update_coredns_forwarding() { mapfile -t nameservers < <(get_nameservers) if [[ "${#nameservers[@]}" -eq 0 ]]; then echo 'Disabling CoreDNS host forwarding ...' - sed -i 's/\(^\s\+\)forward/\1#forward/' "$COREDNS_YAML" + sed -i 's/\(^\s\+\)forward \. \/etc\/resolve\.conf/\1#forward \. \/etc\/resolve\.conf/' "$COREDNS_YAML" + restart_coredns_deployment + else + echo 'Enabling CoreDNS host forwarding ...' + sed -i 's/\(^\s\+\)#forward \. \/etc\/resolve\.conf/\1forward \. \/etc\/resolve\.conf/' "$COREDNS_YAML" restart_coredns_deployment fi } @@ -55,8 +54,7 @@ update_coredns_forwarding() { main() { wait_for_file "$CONTAINERD_SOCK" wait_for_file "$COREDNS_YAML" - wait_for_newer_mtime "$COREDNS_YAML" "$CONTAINERD_SOCK" update_coredns_forwarding } -main +main \ No newline at end of file diff --git a/ansible/roles/k3s-install/tasks/main.yml b/ansible/roles/k3s-install/tasks/main.yml index df41a7a2..b33bea42 100644 --- a/ansible/roles/k3s-install/tasks/main.yml +++ b/ansible/roles/k3s-install/tasks/main.yml @@ -142,4 +142,9 @@ url: https://repo.geedge.net/filerepo/install/release/tsg-container-images/dynamic-host-port.tar dest: /var/lib/rancher/k3s/agent/images/dynamic-host-port.tar url_username: "{{ lookup('env', 'PULP_REPO_USERNAME') }}" - url_password: "{{ lookup('env', 'PULP_REPO_PASSWORD') }}" \ No newline at end of file + url_password: "{{ lookup('env', 'PULP_REPO_PASSWORD') }}" + +- name: "copy coredns-custom yaml file to k3s manifests directory" + copy: + src: "{{ role_path }}/files/coredns-custom.yaml" + dest: /var/lib/rancher/k3s/server/manifests/