วิธีการติดตั้งและใช้งาน 전체(GitOps 도구)บน 아마존 EKS-1부

9555 단어 eksgitopsfluxawsthai

소개하다.


GitOps[1]เป็นการนำ 도구, 모범 사례และประโยชน์ต่างๆจาก 지트และ 지속적인 통합/지속적인 배송(CI/CD)ที่มีการใช้งานกันเป็น 스탠더드ใน SDLC(Software Development Lifecycle)มาใช้ร่วมกับ 인프라 코드(IaC)ในทางฝั่งของ IT 운영เพื่อจัดการกับ 인프라 시설ต่างๆ
통량[2]เป็นหนึ่งใน GitOps 도구ที่ได้รับได้ความนิยมในปัจจุบัน เพื่อใช้การใช้จัดการ 리소스ต่างๆบน 쿠베르네트스 성계단โดย 릴리즈ที่ใช้ในปัจจุบันคือ 통량ซึ่งตัว 통량 계산ใน 무리를 이루다จะทำการ 잡아당기다ตัว 선언식(IaC)จาก Git 저장소และทำการ 쿠베르네트스 자원ต่างๆให้ตรงตามนั้น
ใน 블로그 게시물นี้เราจะมาดูการติดตั้งและใช้งาน 통량ในเบื้องต้นกัน

선결 조건

  • ทำการติดตั้ง eksctl และ flux
  • สร้าง personal access token บน GitHub 계정
  • Amazon EKS 클러스터에 트래픽 설정 방법


    eksctl[3]เป็นหนึ่งใน 표준 도구ที่ใช้ในการสร้างและจัดการ EKS 클러스터และตั้งแต่ 위슨0.53.0จะมี 특징.ในการติดตั้ง 통량รวมอยู่ด้วย
    ขั้นตอนในการสร้าง EKS 클러스터ใหม่และติดตั้ง 통량โดยอัตโนมัติ

  • 출구ค่าต่างๆที่จะต้องใช้ในขั้นตอนต่อๆไป
    export GITHUB_USERNAME=<your GitHub username>
    export GITHUB_TOKEN=<your GitHub personal access token>
    

  • สร้าง 프로파일ด้วย 비밀 번호ด้านล่างนี้และเปลี่ยน <GitHub username> เป็นชื่อ GitHub 사용자 이름ของเรา
    cat << EOF > eks-gitops-demo.yaml
    apiVersion: eksctl.io/v1alpha5
    kind: ClusterConfig
    
    metadata:
      name: eks-gitops-demo
      region: ap-southeast-1
    
    managedNodeGroups:
      - name: ng-1
        instanceType: m5.large
        desiredCapacity: 1
    
    gitops:
      flux:
        gitProvider: github
        flags:
          owner: "${GITHUB_USERNAME}"
          personal: "true"
          private: "true"
          repository: "eks-gitops-demo"
          branch: "master"
          namespace: "flux-system"
          path: "clusters/eks-gitops-demo"
    EOF
    
  • ทำการสร้าง EKS 클러스터โดยใช้คำสั่ง eksctl create cluster --config-file eks-gitops-demo.yaml และรอจน 무리를 이루다สร้างเสร็จ
  • เราสามารถเช็ค 리소스ต่างๆที่เกี่ยวกับ 통량โดยใช้คำสั่ง kubectl --namespace flux-system get all
  • และใน GitHub 계정ของเราจะมี 저장소ใหม่ที่ชื่อ eks-gitops-demo ถูกสร้างขึ้นมาและมี 언약ในส่วนของ 쿠베르네트스 목록 파일ของ 통량 분량ต่างๆ
  • ถึงตรงนี้แสดงว่าขั้นตอนการสร้าง EKS 클러스터ใหม่ที่มีการติดตั้ง 통량มาด้วยเป็นอันเสร็จสมบูรณ์แล้ว
    주의하다.สำหรับกรณีที่เป็น EKS 클러스터เดิมหรือต้องการติดตั้ง 통량แยกทีหลัง
  • ในกรณีที่ 무리를 이루다ที่ถูกสร้างด้วย eksctlเราสามารถติดตั้ง 통량โดยการใช้คำสั่ง eksctl enable flux ได้
  • ในกรณีที่ไม่ได้ใช้ eksctlเราสามารถติดตั้ง 통량โดยการใช้ flux CLIและคำสั่ง flux bootstrap
  • Flux의 기본 기능 사용 방법


    ต่อมาเราจะมาดูการใช้งาน 통량แบบเบื้องต้นกัน
    ตัวอย่างแรกจะเป็นการใช้ 쿠베르네트스 목록 파일ตามปกติ

  • เริ่มต้นจากการ 클론 GitHub 저장소ที่ 통량ได้สร้างขึ้นมา
    git clone [email protected]:${GITHUB_USERNAME}/eks-gitops-demo.git
    cd eks-gitops-demo
    

  • หลังจากนั้นเราจะสร้าง쿠베르네트스 목록 파일สำหรับ nginx:1.14.2 배포แล้วทำการ 언약และ 밀다ไปยัง github
    mkdir -p clusters/eks-gitops-demo/default/nginx
    
    cat << EOF > clusters/eks-gitops-demo/default/nginx/deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80
    EOF
    
    git add clusters/eks-gitops-demo/default/nginx/deployment.yaml
    git commit -m "Add Nginx deployment"
    git push
    
  • ตามค่า 기본 구성 트래픽จะ 잡아당기다ข้อมูลจาก githubทุกๆ 10นาทีและทำการ 쿠베르네트스 자원แต่เราสามารถใช้คำสั่ง flux reconcile source git flux-system เพื่อทำการ 잡아당기다โดยทันทีได้
  • หลังจากนั้นเราสามารถเช็คได้ว่า 통량ทำการ 응용 변화ต่างๆและมีการสร้าง 쿠베르네트스 배치ขึ้นมา โดยใช้คำสั่ง kubectl get deployment nginx-deployment

  • หลังจากนั้นลองทำการเปลี่ยนใน 배포 목록 파일nginx:1.15.0และทำการ 언약และ 밀다ไปยัง githubอีกครั้งนึง
    sed -i '' 's/1.14.2/1.15.0/' clusters/eks-gitops-demo/default/nginx/deployment.yaml
    
    git add clusters/eks-gitops-demo/default/nginx/deployment.yaml
    git commit -m "Change Nginx image to 1.15.0"
    git push
    
  • หลังจาก 통량ทำการ 알맞다เสร็จ จะเห็นได้ว่า 배치하다มีการเปลี่ยนไปใช้ nginx:1.15.0
  • 7. (보너스)ถ้าลองลบ 배포 목록แล้วทำการ 언약และ 밀다ไปยัง githubหลังจาก 통량ทำการ 알맞다เสร็จ จะเห็นได้ว่าตัว 배치하다ของ nginxจะถูกลบไปเช่นกัน
    อีกตัวอย่างนึงจะเป็นการใช้งาน 통량ร่วมกับ 키를 잡다

  • เริ่มต้นจากการสร้าง 헬름스ที่ชี้ไปยัง 조타도 저장소ในตัวอย่างนี้เราจะใช้ prometheus-community
    mkdir -p clusters/eks-gitops-demo/monitoring
    
    cat << EOF > clusters/eks-gitops-demo/monitoring/namespace.yaml
    apiVersion: v1
    kind: Namespace
    metadata:
      name: monitoring
    EOF
    ---
    cat << EOF > clusters/eks-gitops-demo/monitoring/prometheus-community.yaml
    apiVersion: source.toolkit.fluxcd.io/v1beta1
    kind: HelmRepository
    metadata:
      name: prometheus-community
      namespace: monitoring
    spec:
      url: https://prometheus-community.github.io/helm-charts
      interval: 10m
    EOF
    

  • หลังจากนั้นทำการสร้าง 투구 시전CRDสำหรับที่จะให้ 전체 배포โดยใช้ 다이어그램ที่ชื่อ kube-prometheus-stack หลังจากนั้นทำการ 언약และ 밀다ไปยัง github
    mkdir -p clusters/eks-gitops-demo/monitoring
    
    cat << EOF > clusters/eks-gitops-demo/monitoring/namespace.yaml
    apiVersion: v1
    kind: Namespace
    metadata:
      name: monitoring
    EOF
    
    cat << EOF > clusters/eks-gitops-demo/monitoring/kube-prometheus-stack.yaml
    apiVersion: helm.toolkit.fluxcd.io/v2beta1
    kind: HelmRelease
    metadata:
      name: kube-prometheus-stack
      namespace: monitoring
    spec:
      releaseName: kube-prometheus-stack
      interval: 10m
      chart:
        spec:
          chart: kube-prometheus-stack
          sourceRef:
            kind: HelmRepository
            name: prometheus-community
            namespace: monitoring
    EOF
    
    git add clusters/eks-gitops-demo/monitoring/*
    git commit -m "Add Prometheus with Helm"
    git push
    
  • หลักจากนั้นใช้คำสั่ง flux reconcile source git flux-system เพื่อ 거스름돈 거슬러 주다จาก githubและเนื่องจากใน 투구 시전CRDเราตั้ง 간헐ในการ 알맞다เป็นทุกๆ 10นาที เราสามารถใช้คำสั่ง flux --namespace monitoring reconcile helmrelease kube-prometheus-stack เพื่อให้ 알맞다ทันทีได้เช่นกัน
  • หลักจาก 알맞다เสร็จสิ้น เราสามารถเช็คได้ว่า 리소스ต่างๆสำหรับ 프로메테우스ได้มีการติดตั้งใน 무리를 이루다อย่างถูกต้องโดย 조타도ผ่าน 통량
  • 결론


    지토프스เป็นการนำเทคนิคและการใช้งาน Git,CI/CDและ IaCมาประกอบกันเพื่อให้เราสามารถจัดการ 인프라 시설ได้อย่างมีประสิทธิภาพและลดความผิดพลาดที่อาจจะเกิดขึ้นจาก 인공 과정
    통량เป็น 공구.ที่ช่วยให้เราสามารถ GitOps 구현บน 쿠베르네트스ได้อย่างสะดวกยิ่งขึ้น ซึ่งใน 블로그 게시물นี้เราได้เห็นวิธีการติดตั้งบน 아마존 EKSผ่าน eksctl
    หลังจากนั้นเราได้เห็นตัวอย่างวิธีการติดใช้งาน 통량ในเบื้องต้น และใน 섹션ที่ 2เราจะมาดูตัวอย่างและ 특징.อื่นๆของ 통량กัน

    도구책


    [1] https://www.gitops.tech/#what-is-gitops
    [2] https://fluxcd.io/
    [3] https://eksctl.io/
    [4] https://helm.sh/

    좋은 웹페이지 즐겨찾기