How to deploy the Kubernetes agent
You can use any method you prefer to deploy the Zenoss agent for
Kubernetes into a cluster. The following sections demonstrate using the
kubectl
command and using a
Helm chart. Both methods require
only the name of the cluster and an authentication key.
Deploy with kubectl
Use this procedure to deploy and manage Zenoss agent for
Kubernetes with kubectl
. The Zenoss agent for Kubernetes
supports Kubernetes 1.8 and all subsequent versions and requires
metrics-server.
To perform this procedure, you need an authentication key. Also, the deployment configuration in this procedure assumes that Kubernetes can download images from Docker Hub. If not, download the Zenoss agent for Kubernetes and add it to your local registry.
-
Configure
kubectl
to use the correct context.kubectl config current-context
-
Optional: Create a secret for the authentication key you are using for the cluster.
While not required, creating a secret is the most secure way to manage information like authentication keys. Replace MY_API_KEY key with an authentication key:
kubectl -n kube-system create secret generic zenoss \ --from-literal=api-key=MY_API_KEY ; history -d $(history 1)
The
history
command removes the authentication key from your shell history file. -
Create a configuration file for the agent.
Replace MY_CLUSTER_NAME on line 60 with the unique name of the target cluster.
zenoss-agent-kubernetes.yml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
apiVersion: v1 kind: ServiceAccount metadata: name: zenoss-agent-kubernetes namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: kubernetes.io/bootstrapping: rbac-defaults name: system:zenoss-agent-kubernetes rules: - apiGroups: ["metrics.k8s.io"] resources: ["nodes", "pods"] verbs: ["get", "list", "watch"] - apiGroups: [""] resources: ["nodes", "namespaces", "pods"] verbs: ["get", "list", "watch"] - apiGroups: ["extensions", "apps"] resources: ["deployments"] verbs: ["get", "list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: zenoss-agent-kubernetes roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:zenoss-agent-kubernetes subjects: - kind: ServiceAccount name: zenoss-agent-kubernetes namespace: kube-system --- apiVersion: apps/v1 kind: Deployment metadata: name: zenoss-agent-kubernetes namespace: kube-system labels: app: zenoss-agent-kubernetes spec: replicas: 1 selector: matchLabels: app: zenoss-agent-kubernetes template: metadata: labels: task: zenoss-agent-kubernetes spec: serviceAccountName: zenoss-agent-kubernetes containers: - name: zenoss-agent-kubernetes image: zenoss/zenoss-agent-kubernetes env: - name: CLUSTER_NAME value: MY_CLUSTER_NAME - name: ZENOSS_API_KEY valueFrom: secretKeyRef: name: zenoss key: api-key
-
Apply the deployment.
kubectl apply -f zenoss-agent-kubernetes.yml
Manage the agent
To update the agent, edit its configuration file and then apply the file. Kubernetes applies only the changes.
kubectl apply -f zenoss-agent-kubernetes.yml
To remove the agent and all of its resource, enter the following command:
kubectl delete -f zenoss-agent-kubernetes.yml
Deploy with a Helm chart
Use this procedure to deploy Zenoss agent for Kubernetes with Helm. The Zenoss agent for Kubernetes supports Kubernetes 1.8 and all subsequent versions and requires metrics-server.
To perform this procedure, you need:
- An authentication key.
- Internet access in the target cluster, to download the agent image automatically. Alternatively, download the Zenoss agent for Kubernetes manually and add it to your local registry.
- Helm 2.14.3 or a subsequent stable release.
Follow these steps:
-
Add the Zenoss repository that contains the Helm chart for the Zenoss agent for Kubernetes to Helm.
helm repo add zenoss https://zenoss.github.io/charts/
-
Optional: Review the chart parameters that you can specify during deployment.
-
Deploy the agent.
- Replace MY_CHART_NAME with a unique name for the chart
- Replace MY_CLUSTER_NAME with the unique name of the target cluster
- Replace MY_API_KEY with an authentication key
helm install MY_CHART_NAME zenoss-agent-kubernetes \ --set zenoss.clusterName=MY_CLUSTER_NAME \ --set zenoss.apiKey=MY_API_KEY ; \ history -d $(history 1)
The
history
command removes the authentication key from your shell history file.
For more information about using Helm, refer to the Helm documentation.