apiVersion: v1 kind: Namespace metadata: name: portainer --- apiVersion: v1 kind: ServiceAccount metadata: name: portainer-sa-clusteradmin namespace: portainer --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: portainer-crb-clusteradmin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: portainer-sa-clusteradmin namespace: portainer --- apiVersion: v1 kind: Service metadata: name: portainer-agent namespace: portainer spec: type: NodePort selector: app: portainer-agent ports: - name: http protocol: TCP port: 9001 targetPort: 9001 nodePort: 30778 --- apiVersion: v1 kind: Service metadata: name: portainer-agent-headless namespace: portainer spec: clusterIP: None selector: app: portainer-agent --- apiVersion: apps/v1 kind: Deployment metadata: name: portainer-agent namespace: portainer spec: selector: matchLabels: app: portainer-agent template: metadata: labels: app: portainer-agent spec: serviceAccountName: portainer-sa-clusteradmin containers: - name: portainer-agent image: portainer/agent:latest imagePullPolicy: Always env: - name: LOG_LEVEL value: DEBUG - name: AGENT_CLUSTER_ADDR value: "portainer-agent-headless" - name: KUBERNETES_POD_IP valueFrom: fieldRef: fieldPath: status.podIP ports: - containerPort: 9001 protocol: TCP