AWS EKS 클러스터에 Kubernetes 리소스 적용 - Bitbucket Pipeline



k8s 배포를 적용합니다.



Official

파이프라인에서 this one을 사용합니다.

다음이 필요합니다.
  • AWS IAM.
  • 역할/ClusterRole 및 바인딩.

  • AWS IAM


    User 중 하나를 생성하기만 하면 됩니다. 이 사용자는 콘솔에 액세스하지 않습니다. 이 사용자의 키와 토큰을 BitBucket에 구성합니다.

    사용자는 최소한 다음과 같은 정책을 가지고 있어야 합니다.

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "eks:DescribeCluster"
                ],
                "Resource": "*"
            }
        ]
    }
    


    역할/ClusterRole 및 바인딩.



    2 리소스를 적용해야 합니다.

    클러스터 역할

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: bitbucket-cicd
    rules:
    - apiGroups:
      - ""
      resources:
      - nodes
      - pods
      - services
      verbs:
      - get
      - list
      - update
      - patch
    - apiGroups:
      - apps
      resources:
      - deployments
      - daemonsets
      - statefulsets
      - replicasets
      verbs:
      - get
      - list
      - update
      - patch
    - apiGroups:
      - batch
      resources:
      - jobs
      verbs:
      - get
      - list
      - update
      - patch
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: bitbucket-cicd-binding
    subjects:
    - kind: Group
      name: bitbucket-group
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: ClusterRole
      name: bitbucket-cicd
      apiGroup: rbac.authorization.k8s.io
    
    

    apiGroups : k8s 매니페스트를 생성할 때 apiVersion이 지정됩니다. apiGroups는 이 버전에서 첫 번째 슬래시까지의 문자열입니다. 버전은 무시해야 합니다. 예를 들어 그룹 이름이 v1인 경우 apiGroups는 빈 문자열이 됩니다. 모든 api 그룹을 가져올 수 있습니다. 명령을 사용하십시오 kubectl api-resources .
    verbes : 모든 동사는 here 입니다.

    ClusterRoleBinding

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: bitbucket-cicd-binding
    subjects:
    - kind: Group
      name: bitbucket-group
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: ClusterRole
      name: bitbucket-cicd
      apiGroup: rbac.authorization.k8s.io
    


    과목



    이 필드에서 역할이 연결된 사용자, 그룹 또는 ServiceAccount를 지정합니다.
    kind : 사용자/그룹/ServiceAccount가 됩니다.
    name : 종류의 리소스 이름입니다.

    aws-auth 편집



    ClusterRoleBinding 및 IAM 사용자를 매핑합니다.

    kubectl edit -n kube-system configmap/aws-auth
    


    매핑 데이터는 다음과 같습니다...

    apiVersion: v1
    data:
      mapAccounts: |
        []  
      mapRoles: |
        - "userarn": "arn:aws:iam::{account id}:user/{IAM name}"
          "username": "bitbucket-cicd-user" # Name you like
          "groups":
          - "bitbucket-group" # Group name you specified in ClusterRoleBinding
    -- omit.....
    

    좋은 웹페이지 즐겨찾기