다중 클라우드에서 Kubernetes를 관리하도록 AWS에서 Gardener 설정

이 기사에서는 멀티 클라우드에서 Kubernetes 클러스터를 관리하기 위해 AWS에서 설정Gardener하는 방법을 보여 드리겠습니다.

메모:
1000개 이상의 Kubernetes 클러스터를 사용하는 경우 Gardener를 선택하는 것이 좋습니다.
이 문서에는 ""에 대한 추가 정보가 있습니다.

단계

내가 사용하고 있는 머신은 EC2의 Debian 10입니다.

1- 다음을 통해 EKS 클러스터에 연결

aws eks --region YOUR_REGION update-kubeconfig --name YOUR_CLUSTER



2- EKS 클러스터에서 Gardener는 Vertical Pod Autoscaler을 설치해야 합니다.
3- 클러스터용 서비스 계정 생성

kubectl -n kube-system create serviceaccount kubeconfig-sa
kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:kubeconfig-sa
TOKENNAME=`kubectl -n kube-system get serviceaccount/kubeconfig-sa -o jsonpath='{.secrets[0].name}'`
TOKEN=`kubectl -n kube-system get secret $TOKENNAME -o jsonpath='{.data.token}'| base64 -d`
kubectl config set-credentials kubeconfig-sa --token=$TOKEN
kubectl config set-context --current --user=kubeconfig-sa
kubectl get pods


4- 클론 암퇘지와 풍경

git clone "https://github.com/gardener/sow"
cd sow
export PATH=$PATH:$PWD/docker/bin
cd ..
mkdir landscape
cd landscape
git clone "https://github.com/gardener/garden-setup" crop


5- ./kube/config를 ./kubeconfig로 복사하여 kubeconfig 생성

cp /home/admin/.kube/config /home/admin/gardener/landscape/kubeconfig



6-/home/admin/gardener/landscape/acre.yaml에 acre.yaml 생성

다음 구성을 추가합니다.

landscape:
  name: aws-gardener
  domain: example.com
  cluster: # information about your base cluster
    kubeconfig: ./kubeconfig # path to your `kubeconfig` file
    networks: # CIDR IP ranges of base cluster
      nodes: 10.0.0.0/19
      pods: 10.1.0.0/19
      services: 172.20.0.0/16
  iaas:
    - name: aws-gardener-seed # name of the seed
      type: aws # iaas provider
      region: eu-central-1 # region for initial seed
      zones:
        - eu-central-1a
        - eu-central-1b
        - eu-central-1c
      credentials:
         accessKeyID: XXX
         secretAccessKey: XXX

  etcd: # optional, default values based on `landscape.iaas`
    backup:
      type: s3 # type of blob storage
      region: (( iaas.aws-gardener-seed.region ))
      credentials: (( iaas.aws-gardener-seed.credentials ))

  dns: # optional, default values based on `landscape.iaas`
    type: aws-route53 # dns provider
    credentials: (( iaas.aws-gardener-seed.credentials ))

  identity:
    users:
      - email: [email protected] # email (used for Gardener login)
        username: admin # username (displayed in Gardener dashboard)
        password: XXXX #(used for Gardener login)

    cert-manager:
      email: [email protected] # email for acme registration
      server: self-signed # which kind of certificates to use for the dashboard/identity ingress (defaults to `self-signed`)



7- 다음을 통해 구성(acre.yaml)을 테스트합니다.

admin@ec2:~/gardener/landscape$ sow order -A


8- 정원사 배치

admin@ec2:~/gardener/landscape$ sow deploy -A


9- 이 그림과 같은 Gardener 대시보드의 URL을 얻을 수 있습니다.



옵션: Gardener가 GCP 또는 Azure와 같은 다른 클라우드 공급자를 지원하도록 하려면 iaas 섹션 아래의 6단계에서 acre.yaml에 다음을 추가해야 합니다.

Azure의 경우:

    - name: azure-seed 
      type: azure 
      region: XXXX 
      credentials:
        clientID: "XXXXXX"
        clientSecret: "XXXXXXX"
        subscriptionID: "XXXXXXXX"
        tenantID: "XXXXXXXX"

      cluster:
        kubeconfig: ./azure/kubeconfig # path to your `kubeconfig` file
        networks:
          nodes: 10.242.0.0/19
          pods: 10.243.128.0/17
          services: 10.243.0.0/17


GCP의 경우:

    - name: gcp-seed
      type: gcp
      region: XXXX
      zones:
        - (( region "-a"))
        - (( region "-b"))
        - (( region "-c"))
      credentials:
        serviceaccount.json: |
          {

          "type": "service_account",
          "project_id": "XX",
          "private_key_id": "XX",
          "private_key":   "XX",
          "client_email": "XXX",
          "client_id": "XX",
          "auth_uri": "https://accounts.google.com/o/oauth2/auth",
          "token_uri": "https://oauth2.googleapis.com/token",
          "auth_provider_x509_cert_url": "XX",
          "client_x509_cert_url": "XX"
          }

      cluster:
        kubeconfig: ./gcp/kubeconfig
        networks:
          nodes: "10.1.0.0/16" 
          pods: "10.2.0.0/19" 
          services: "172.21.0.0/16"


출처:
https://news.sap.com/germany/2018/11/cloud-kubernetes-hpfa/

좋은 웹페이지 즐겨찾기