github.com/looshlee/cilium@v1.6.12/examples/kubernetes-ingress/scripts/01-install-etcd.sh (about)

     1  #!/usr/bin/env bash
     2  #
     3  # Installs, configures and starts etcd, it will use default values from
     4  # ./helpers.bash
     5  # Globals:
     6  #   INSTALL, if set installs ETCD binaries, otherwise it will only configure etcd
     7  #   ETCD_CLEAN, if set it will clean up ETCD directory `/var/lib/etcd`
     8  #######################################
     9  
    10  dir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
    11  
    12  source "${dir}/helpers.bash"
    13  
    14  cache_dir="${dir}/../../../hack/cache"
    15  
    16  k8s_cache_dir="${cache_dir}/k8s/${k8s_version}"
    17  
    18  log "Installing etcd..."
    19  
    20  certs_dir="${dir}/certs"
    21  
    22  set -e
    23  
    24  sudo mkdir -p /etc/etcd/
    25  
    26  cp "${certs_dir}/etcd-server.pem" \
    27     "${certs_dir}/etcd-server-key.pem" \
    28     "${certs_dir}/ca-etcd.pem" \
    29     /etc/etcd/
    30  
    31  if [ -n "${INSTALL}" ]; then
    32      download_to "${cache_dir}/etcd" "etcd-${etcd_version}-linux-amd64.tar.gz" \
    33          "https://github.com/coreos/etcd/releases/download/${etcd_version}/etcd-${etcd_version}-linux-amd64.tar.gz"
    34  
    35      cp "${cache_dir}/etcd/etcd-${etcd_version}-linux-amd64.tar.gz" .
    36      tar -xvf etcd-${etcd_version}-linux-amd64.tar.gz
    37  
    38      sudo mv etcd-${etcd_version}-linux-amd64/etcd* /usr/bin/
    39  fi
    40  
    41  if [ -n "${ETCD_CLEAN}" ] && [ -n "${RELOAD}" ]; then
    42      sudo service etcd stop
    43      sudo rm -fr /var/lib/etcd
    44  fi
    45  
    46  sudo mkdir -p /var/lib/etcd
    47  
    48  ETCD_NAME=master
    49  
    50  sudo tee /etc/systemd/system/etcd.service <<EOF
    51  [Unit]
    52  Description=etcd-${etcd_version}
    53  Documentation=https://coreos.com/etcd/docs/${etcd_version:1}/index.html
    54  
    55  [Service]
    56  ExecStart=/usr/bin/etcd --name ${ETCD_NAME} \\
    57    --advertise-client-urls https://${controllers_ips[0]}:2379 \\
    58    --data-dir=/var/lib/etcd \\
    59    --initial-advertise-peer-urls https://${controllers_ips[0]}:2380 \\
    60    --initial-cluster-state new \\
    61    --initial-cluster-token etcd-cluster-0 \\
    62    --initial-cluster ${ETCD_NAME}=https://${controllers_ips[0]}:2380 \\
    63    --listen-client-urls https://${controllers_ips[0]}:2379,http://127.0.0.1:2379 \\
    64    --client-cert-auth \\
    65    --cert-file='/etc/etcd/etcd-server.pem' \\
    66    --key-file='/etc/etcd/etcd-server-key.pem' \\
    67    --trusted-ca-file='/etc/etcd/ca-etcd.pem'
    68  Restart=on-failure
    69  RestartSec=5
    70  
    71  [Install]
    72  WantedBy=multi-user.target
    73  EOF
    74  
    75  sudo systemctl daemon-reload
    76  
    77  sudo systemctl enable etcd
    78  
    79  sudo systemctl restart etcd
    80  
    81  sudo systemctl status etcd --no-pager
    82  
    83  log "Installing etcd... DONE!"