resource "kubectl_manifest" "ServiceAccount_whereabouts" {
  yaml_body  = <<-EOF
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: whereabouts
      namespace: ${var.namespace}
      ownerReferences: ${jsonencode(var.install_owner)}
      labels: ${jsonencode(local.common-labels)}
EOF
}

resource "kubectl_manifest" "ClusterRoleBinding_whereabouts" {
  yaml_body  = <<-EOF
    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: whereabouts
      labels: ${jsonencode(local.common-labels)}
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: whereabouts-cni
    subjects:
    - kind: ServiceAccount
      name: whereabouts
      namespace: ${var.namespace}
EOF
}

resource "kubectl_manifest" "ClusterRole_whereabouts-cni" {
  yaml_body  = <<-EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: whereabouts-cni
      labels: ${jsonencode(local.common-labels)}
    rules:
    - apiGroups:
      - whereabouts.cni.cncf.io
      resources:
      - ippools
      - overlappingrangeipreservations
      verbs:
      - get
      - list
      - watch
      - create
      - update
      - patch
      - delete
    - apiGroups:
      - coordination.k8s.io
      resources:
      - leases
      verbs:
      - '*'
    - apiGroups:
      - ''
      resources:
      - pods
      verbs:
      - list
      - watch
    - apiGroups:
      - ''
      resources:
      - nodes
      verbs:
      - get
    - apiGroups:
      - k8s.cni.cncf.io
      resources:
      - network-attachment-definitions
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - ''
      - events.k8s.io
      resources:
      - events
      verbs:
      - create
      - patch
      - update
      - get
EOF
}

