# Kubernetes Enterprise plugin

# Introduction

<span style="font-weight: 400;">This plugin allows you to obtain data from a Kubernetes environment, generating agents for each of its elements and monitoring statistics. </span>

<span style="font-weight: 400;">The information is obtained through the web, by means of the Kubernetes API, so it is not necessary to install any additional software for its operation. Although, in order to obtain the CPU and memory usage data of the containers and nodes, it will be necessary to install the "metrics-server" addon in the Kubernetes environment. </span>

# Compatibility Matrix

<span style="font-weight: 400;">Developed for: </span>

- <span style="font-weight: 400;">Kubernetes v1.14.3. </span>
- <span style="font-weight: 400;">Metrics-server 1.8+. </span>

# Prerequisites

<span style="font-weight: 400;">Connection with the Tentacle service associated with your Pandora FMS server is required. </span>

<span style="font-weight: 400;">Access credentials or an authentication token to the Kubernetes API of a user with enough permissions to query the API will be required. </span>

<span style="font-weight: 400;">Optionally, if you want to obtain the CPU and memory usage data of containers and nodes, install the "metrics-server" addon in the Kubernetes environment. </span>

# Permit assignement for the api

<span style="font-weight: 400;">The following describes the steps to be followed to create a user with enough permissions to obtain the monitoring data. </span>

1. <span style="font-weight: 400;"> Create a read "</span>*<span style="font-weight: 400;">Cluster role</span>*<span style="font-weight: 400;">" called "</span>*<span style="font-weight: 400;">api-read-only</span>*<span style="font-weight: 400;">": Create a role that grants the "</span>*<span style="font-weight: 400;">get</span>*<span style="font-weight: 400;">", "</span>*<span style="font-weight: 400;">list</span>*<span style="font-weight: 400;">" and "</span>*<span style="font-weight: 400;">watch</span>*<span style="font-weight: 400;">" permissions of all Kubernetes resources. </span>

```
cat <<EOF | kubectl apply -f - 
apiVersion: rbac.authorization.k8s.io/v1 
kind: ClusterRole 
metadata: 
annotations: 
rbac.authorization.kubernetes.io/autoupdate: "true" 
labels: 
name: api-read-only 
rules: 
- apiGroups: 
- '*' 
resources: 
- '*' 
verbs: 
- get 
- list 
- watch 
- nonResourceURLs: 
- '*' 
verbs: 
- get 
- list 
- watch 
EOF

```

  
<span style="font-weight: 400;">2. Create a "</span>*<span style="font-weight: 400;">Cluster role binding</span>*<span style="font-weight: 400;">" called "</span>*<span style="font-weight: 400;">bind-api-read-only</span>*<span style="font-weight: 400;">": The previously created role will be binded to an existing "</span>*<span style="font-weight: 400;">service account.</span>*<span style="font-weight: 400;">" </span>

```
kubectl create clusterrolebinding bind-api-read-only \ 
--clusterrole=api-read-only \ 
--serviceaccount=namespace:user
```

# Metrics-server installation

<span style="font-weight: 400;">To install the "</span>*<span style="font-weight: 400;">metrics-server</span>*<span style="font-weight: 400;">" addon, download it in the Kubernetes environment. It can be obtained from its github project: </span>

<span style="font-weight: 400;">https://github.com/kubernetes-incubator/metrics-server</span><span style="font-weight: 400;"> </span>

<span style="font-weight: 400;">Once downloaded, deploy it through the "</span>*<span style="font-weight: 400;">kubectl</span>*<span style="font-weight: 400;">" command: </span>

```
kubectl apply -f metrics-server/deploy/1.8+/
```

<span style="font-weight: 400;">You can verify that the deployment was successful if, upon launching the following command, the status of its API is "</span>*<span style="font-weight: 400;">true</span>*<span style="font-weight: 400;">": </span>

```
$ kubectl get apiservices | grep metrics-server 

v1beta1.metrics.k8s.io kube-system/metrics-server True 1m
```

<span style="font-weight: 400;">If the deployment was successful, the "</span>*<span style="font-weight: 400;">metrics-server</span>*<span style="font-weight: 400;">" API should stay accessible: </span>

```
$ kubectl get --raw "/apis/metrics.k8s.io/v1beta1/" 

{"kind":"APIResourceList","apiVersion":"v1","groupVersion":"metrics.k8s.io/v1beta1","res ources":[{"name":"nodes","singularName":"","namespaced":false,"kind":"NodeMetrics ","verbs":["get","list"]},{"name":"pods","singularName":"","namespaced":true,"kind":"P odMetrics","verbs":["get","list"]}]}
```

<span style="font-weight: 400;">In addition, after a few seconds, it should be possible to obtain CPU and memory usage data of containers and nodes: </span>

```
$ kubectl top node 

NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% 

kube 93m 4% 968Mi 56% 

$ kubectl top pod 

NAME CPU(cores) MEMORY(bytes) 

pod1 0m 3Mi 

pod2 0m 3Mi 

pod3 0m 2Mi 

pod4 0m 3Mi 

pod5 0m 1Mi
```

# Settings

<span style="font-weight: 400;">The plugin configuration file "</span>*<span style="font-weight: 400;">pandora\_kubernetes</span>*<span style="font-weight: 400;">" is divided into sections (all configuration parameters will be indicated without quotation marks even if they have blank spaces): </span>

```
API access settings 

## API connection parameters 

api_ip=192.168.80.145 

api_port=8443 

ssl=1 

## HTTP bearer authentication parameters 

auth_method=bearer 

auth_token=auth-token 

## HTTP basic authentication parameters 

#auth_method=basic 

#auth_user=user 

#auth_pass=pass 
```

**api\_ip**

<span style="font-weight: 400;">IP address to the Kubernetes API service. </span>

**port**

<span style="font-weight: 400;">Port listening to the Kubernetes API service. </span>

**auth\_token**

<span style="font-weight: 400;">If "</span>*<span style="font-weight: 400;">auth\_method=bearer</span>*<span style="font-weight: 400;">" indicates the authentication token of the user with access to the API. This token can be obtained by following these steps: </span>

1. <span style="font-weight: 400;"> Obtaining the user's "</span>*<span style="font-weight: 400;">secret name</span>*<span style="font-weight: 400;">": </span>

```
$ kubectl get serviceaccounts user -o yaml 

apiVersion: v1 

kind: ServiceAccount 

metadata: 

creationTimestamp: "2019-06-19T10:11:48Z" 

name: user 

namespace: namespace 

resourceVersion: "327" 

selfLink: /api/v1/namespaces/namespace/serviceaccounts/user 

uid: a60f3652-927a-11e9-b423-ae1361a56794 

secrets: 

- name: secret_name
```

2. <span style="font-weight: 400;"> Obtaining the “</span>*<span style="font-weight: 400;">token</span>*<span style="font-weight: 400;">” of the “</span>*<span style="font-weight: 400;">secret name</span>*<span style="font-weight: 400;">”: </span>

```
$ kubectl describe secret secret_name 

Name: secret-name 

Namespace: namespace 

Labels: <none> 

Annotations: kubernetes.io/service-account.name: default 

kubernetes.io/service-account.uid: a60f3652-927a-11e9-b423-ae1361a56794 Type: kubernetes.io/service-account-token 

Data 

==== 

token: auth-token 

ca.crt: 1066 bytes 

namespace: 7 bytes
```

**auth\_user**

<span style="font-weight: 400;">If "</span>*<span style="font-weight: 400;">auth\_method=basic</span>*<span style="font-weight: 400;">" points out the user with access to the API. </span>

**ssl**

<span style="font-weight: 400;">Indicates whether the connection to the API is HTTPS or not (1 → HTTPS, 0 → HTTP). </span>

**auth\_method**

<span style="font-weight: 400;">Authentication mechanism to be used. The values are either "</span>*<span style="font-weight: 400;">bearer</span>*<span style="font-weight: 400;">" or "</span>*<span style="font-weight: 400;">basic</span>*<span style="font-weight: 400;">". </span>

**auth\_pass**

<span style="font-weight: 400;">If "*auth\_method=basic*" indicates the user password with access to the API. </span>

# Generated agent settings

```
## Agents parameters 

interval=300 

group=Servers 

#prefix=KUBE 
```

**interval**

<span style="font-weight: 400;">Monitoring interval of the generated agents in seconds. It will allow to define when modules will go into unknown status (by default, 2 times the defined interval without receiving any data). </span>

**group**

<span style="font-weight: 400;">Group to which the generated agents will be assigned. This group will be taken into account only if the "</span>*<span style="font-weight: 400;">autocreate\_group</span>*<span style="font-weight: 400;">" parameter of the Pandora FMS server has not been correctly defined. </span>

**prefix**

<span style="font-weight: 400;">It allows to include a text string before the names of the generated agents, in order to identify the execution they come from (in case of having several plugin executions configured). </span>

**Agent mode**

```

## Agent mode for deployments and pods
## 1 = learning mode
## 0 = normal mode
## 2 = autodisable mode (default value)

agent_mode=2

```

**normal mode**

To not disable the "deployments" and "pods" elements

**autodisable mode**

To disable "deployments" and "pods" elements (default)

# XML file transfer settings

```
## XML local transfer parameters 

tmp=/tmp 

transfer_mode=local 

local_folder=/var/spool/pandora/data_in 

## XML remote transfer parameters 

#tmp=/tmp 

#transfer_mode=tentacle 

#tentacle_ip=127.0.0.1 

#tentacle_port=41121 
```

**tmp**

<span style="font-weight: 400;">Temporary directory in which the XML files of the generated agents will be created before being transferred to the Pandora FMS server. </span>

**transfer\_mode**

<span style="font-weight: 400;">File transfer method to be used. If it is not set as "</span>*<span style="font-weight: 400;">tentacle</span>*<span style="font-weight: 400;">", the transfer method </span>

<span style="font-weight: 400;">considered will be "</span>*<span style="font-weight: 400;">local</span>*<span style="font-weight: 400;">" (copying the XML files from the temporary directory to a defined one). </span>

**local\_folder**

<span style="font-weight: 400;">Directory to which the XML files will be copied if the transfer method is not </span>

<span style="font-weight: 400;">established as "</span>*<span style="font-weight: 400;">tentacle</span>*<span style="font-weight: 400;">”. </span>

**tentacle\_ip**

<span style="font-weight: 400;">IP address to which the XML files will be sent if the transfer method is established as "</span>*<span style="font-weight: 400;">tentacle</span>*<span style="font-weight: 400;">”.</span>

**tentacle\_port**

<span style="font-weight: 400;">Port to connect to the Tentacle server indicated in the "</span>*<span style="font-weight: 400;">tentacle\_ip</span>*<span style="font-weight: 400;">" parameter. </span>

**tentacle\_opts**

<span style="font-weight: 400;">Additional options for transferring files to the indicated Tentacle server. </span>

# Additional settings

```
## Disable monitoring 

get_healthz=1 

get_namespaces=1 

get_services=1 

get_components=1 

get_pods = 1 

get_nodes=1 

get_metrics=1 

## Additional Kubernetes metrics 

# Example: 

# Apiserver request latencies 

bucket=apiserver_request_latencies_bucket{component="apiserver",group="scheduling.k8s. io",resource="priorityclasses",scope="cluster",subresource="",verb="WATCH",version="v1 ",le="125000"} 

## Extra parameters 

#debug=0 
```

**get\_healthz**

<span style="font-weight: 400;">If it is set to "0", the "/</span>*<span style="font-weight: 400;">healthz</span>*<span style="font-weight: 400;">" API monitoring data will no longer be obtained. Its </span>

<span style="font-weight: 400;">default value if not specified is "1" (enabled). </span>

**get\_namespaces**

<span style="font-weight: 400;">If it is set to "0", the "</span>*<span style="font-weight: 400;">/api/v1/namespaces</span>*<span style="font-weight: 400;">" API monitoring data will no longer be </span>

<span style="font-weight: 400;">obtained. If not specified, its default value is "1" (enabled). </span>

**get\_services**

<span style="font-weight: 400;">If it is set to "0", the "</span>*<span style="font-weight: 400;">/api/v1/services</span>*<span style="font-weight: 400;">" API monitoring data will no longer be obtained. If not specified, its default value is "1" (enabled). </span>

**get\_components**

<span style="font-weight: 400;">If it is set to "0", the "</span>*<span style="font-weight: 400;">/api/v1/componentstatuses</span>*<span style="font-weight: 400;">" API monitoring data will no longer be obtained. If not specified, its default value is "1" (enabled). </span>

**get\_pods**

<span style="font-weight: 400;">If set to '0' "</span>*<span style="font-weight: 400;">/api/v1/pods</span>*<span style="font-weight: 400;">" and "</span>*<span style="font-weight: 400;">/apis/metrics.k8s.io/v1beta1/pods</span>*<span style="font-weight: 400;">" API monitoring data (if the "</span>*<span style="font-weight: 400;">metrics-server</span>*<span style="font-weight: 400;">" addon has been installed) will no longer be obtained. If not specified, its default value is "1" (enabled). </span>

**get\_nodes**

<span style="font-weight: 400;">If set to '0' "</span>*<span style="font-weight: 400;">/api/v1/nodes</span>*<span style="font-weight: 400;">" and "</span>*<span style="font-weight: 400;">/apis/metrics.k8s.io/v1beta1/nodes</span>*<span style="font-weight: 400;">" API monitoring data (if the "</span>*<span style="font-weight: 400;">metrics-server</span>*<span style="font-weight: 400;">" addon has been installed) will no longer be obtained. If not specified, its default value is "1" (enabled). </span>

**get\_deployments**

<span style="font-weight: 400;">If set to '0' "</span>*<span style="font-weight: 400;">/apis/extensions/v1beta1/deployments</span>*<span style="font-weight: 400;">" API monitoring data will no longer be obtained. If not specified, its default value is "1" (enabled). </span>

**discard\_agents**

<span style="font-weight: 400;">List of agents (separated by commas) to be discarded from plugin monitoring. They must be the names of the agents without the prefix indicated. </span>

**get\_metrics**

<span style="font-weight: 400;">If it is set to "0", the "</span>*<span style="font-weight: 400;">/metrics</span>*<span style="font-weight: 400;">" API monitoring data will no longer be obtained. If not specified, its default value is "1" (enabled). </span>

<span style="font-weight: 400;">These metrics must be specified in the configuration file with the following format: </span>**module name=metric**

<span style="font-weight: 400;">For example, if it is specified in the configuration file: </span>

**Apiserver request latencies**

```
bucket=apiserver_request_latencies_bucket{component="apiserver",group="scheduli ng.k8s.io",resource="priorityclasses",scope="cluster",subresource="",verb="WATCH", version="v1",le="125000"} 
```

<span style="font-weight: 400;">A module will be generated, which is called: </span>

*<span style="font-weight: 400;">Apiserver request latencies bucket </span>*

<span style="font-weight: 400;">with this metric value: </span>

*<span style="font-weight: 400;">apiserver\_request\_latencies\_bucket{component="apiserver",group="scheduling.k8s.io",resource= "priorityclasses",scope="cluster",subresource="",verb="WATCH",version="v1",le="125000"} </span>*

**debug**

<span style="font-weight: 400;">If it is set to "1", it will show detailed information about the actions that are carried out during the execution of the plugin. If not specified, its default value is "0" (disabled). </span>

# Manual execution

<span style="font-weight: 400;">To run the plugin, configure the "</span>*<span style="font-weight: 400;">pandora\_kubernetes.conf</span>*<span style="font-weight: 400;">" configuration file according to the preceding instructions. </span>

<span style="font-weight: 400;">Plugin execution: </span>

```
./pandora_kubernetes.64 pandora_kubernetes.conf
```

# Modules generated by the plugin

<span style="font-weight: 400;">The execution of this plugin will generate the following agents and modules: </span>

- **An agent named "Kubernetes"**<span style="font-weight: 400;">: It will contain monitoring data that is not related to containers and nodes. It will contain these modules: </span>○ **API status**<span style="font-weight: 400;">: Indicates whether the API is accessible by the plugin. </span>

<span style="font-weight: 400;">○ </span>**Healthz**<span style="font-weight: 400;">: Indicates whether the API is accessible by the plugin. </span>

<span style="font-weight: 400;">○ </span>**Healthz ping**<span style="font-weight: 400;">: Indicates whether the API is accessible by the plugin. </span>

<span style="font-weight: 400;">○ </span>**Healthz log**<span style="font-weight: 400;">: Indicates whether the API is accessible by the plugin. </span>

<span style="font-weight: 400;">○ </span>**Healthz etcd**<span style="font-weight: 400;">: Indicates whether the API is accessible by the plugin. </span>

<span style="font-weight: 400;">○ </span>**Healthz poststarthook crd informer synced**<span style="font-weight: 400;">: Indicates whether the API is </span><span style="font-weight: 400;">accessible by the plugin. </span>

<span style="font-weight: 400;">○ </span>**Healthz poststarthook generic apiserver start informers**<span style="font-weight: 400;">: Indicates </span><span style="font-weight: 400;">whether the API is accessible by the plugin. </span>

<span style="font-weight: 400;">○ </span>**Healthz poststarthook start apiextensions controllers**<span style="font-weight: 400;">: Indicates whether </span><span style="font-weight: 400;">the API is accessible by the plugin. </span>

<span style="font-weight: 400;">○ </span>**Healthz poststarthook start apiextensions informers**<span style="font-weight: 400;">: Indicates whether </span><span style="font-weight: 400;">the API is accessible by the plugin. </span>

<span style="font-weight: 400;">○ </span>**Namespaces**<span style="font-weight: 400;">: Amount of "</span>*<span style="font-weight: 400;">namespaces</span>*<span style="font-weight: 400;">" in the environment. </span>

<span style="font-weight: 400;">○ </span>**Services**<span style="font-weight: 400;">: Amount of "</span>*<span style="font-weight: 400;">services</span>*<span style="font-weight: 400;">" in the environment. </span>

<span style="font-weight: 400;">○ </span>**Deployments**<span style="font-weight: 400;">: Amount of "</span>*<span style="font-weight: 400;">deployments</span>*<span style="font-weight: 400;">" in the environment. </span>

<span style="font-weight: 400;">○ </span>**Components**<span style="font-weight: 400;">: Amount of "</span>*<span style="font-weight: 400;">components</span>*<span style="font-weight: 400;">" in the environment. </span>

<span style="font-weight: 400;">○ </span>**Component &lt;component&gt;**<span style="font-weight: 400;">: It will generate a module for each "</span>*<span style="font-weight: 400;">component</span>*<span style="font-weight: 400;">" </span><span style="font-weight: 400;">indicating its status (healthy). </span>

<span style="font-weight: 400;">○ </span>**&lt;metric module name&gt;**<span style="font-weight: 400;">: It will generate a module for each metric indicated </span><span style="font-weight: 400;">in the configuration file (with the indicated names). </span>

- **An agent for each node**<span style="font-weight: 400;">: Its parent agent will be "</span>*<span style="font-weight: 400;">Kubernetes</span>*<span style="font-weight: 400;">". They will contain these modules: </span>

<span style="font-weight: 400;">○ </span>**Pods**<span style="font-weight: 400;">: Amount of "</span>*<span style="font-weight: 400;">pods</span>*<span style="font-weight: 400;">" in the node. </span>

<span style="font-weight: 400;">○ </span>**Pods (%)**<span style="font-weight: 400;">: Occupancy percentage of "</span>*<span style="font-weight: 400;">pods</span>*<span style="font-weight: 400;">" in the node. </span>

<span style="font-weight: 400;">○ </span>**CPU (cores)**<span style="font-weight: 400;">: CPU usage of the node. </span>

<span style="font-weight: 400;">○ </span>**CPU (%)**<span style="font-weight: 400;">: CPU usage percentage of the node. </span>

<span style="font-weight: 400;">○ </span>**Memory (bytes)**<span style="font-weight: 400;">: Node memory usage. </span>

<span style="font-weight: 400;">○ </span>**Memory (%)**<span style="font-weight: 400;">: Node memory usage percentage. </span>

<span style="font-weight: 400;">○ </span>**&lt;condition&gt;**<span style="font-weight: 400;">: It will generate a module for each "</span>*<span style="font-weight: 400;">condition</span>*<span style="font-weight: 400;">" in the node </span><span style="font-weight: 400;">indicating its status. </span>

- **An agent for each "pod"**<span style="font-weight: 400;">: Its parent agent will be the node where it is located. They will contain the modules: </span>

<span style="font-weight: 400;">○ </span>**Pod status**<span style="font-weight: 400;">: Indicates the status of "</span>*<span style="font-weight: 400;">pod</span>*<span style="font-weight: 400;">". Possible states: </span>

<span style="font-weight: 400;">■ </span><span style="font-weight: 400;">0 → Failed </span>

<span style="font-weight: 400;">■ </span><span style="font-weight: 400;">1 → Running </span>

<span style="font-weight: 400;">■ </span><span style="font-weight: 400;">2 → Succeeded </span>

<span style="font-weight: 400;">■ </span><span style="font-weight: 400;">3 → Pending </span>

<span style="font-weight: 400;">■ </span><span style="font-weight: 400;">4 → Unknown </span>

<span style="font-weight: 400;">○ </span>**Containers**<span style="font-weight: 400;">: Number of containers in the "</span>*<span style="font-weight: 400;">pod</span>*<span style="font-weight: 400;">". </span>

<span style="font-weight: 400;">○ </span>**Container &lt;container&gt; CPU (cores):** <span style="font-weight: 400;">It will generate a module for each </span><span style="font-weight: 400;">"</span>*<span style="font-weight: 400;">container</span>*<span style="font-weight: 400;">" in the "</span>*<span style="font-weight: 400;">pod</span>*<span style="font-weight: 400;">" indicating the CPU usage in the node. </span>

<span style="font-weight: 400;">○ </span>**Container &lt;container&gt; CPU (%):** <span style="font-weight: 400;">It will generate a module for each </span><span style="font-weight: 400;">"</span>*<span style="font-weight: 400;">container</span>*<span style="font-weight: 400;">" in the "</span>*<span style="font-weight: 400;">pod</span>*<span style="font-weight: 400;">" indicating the CPU usage in the node. </span>

<span style="font-weight: 400;">○ </span>**Container &lt;container&gt; memory (bytes):** <span style="font-weight: 400;">It will generate a module for each </span><span style="font-weight: 400;">"</span>*<span style="font-weight: 400;">container</span>*<span style="font-weight: 400;">" in the "</span>*<span style="font-weight: 400;">pod</span>*<span style="font-weight: 400;">" indicating the CPU usage in the node. </span>

<span style="font-weight: 400;">○ </span>**Container &lt;container&gt; memory (%):** <span style="font-weight: 400;">It will generate a module for each </span><span style="font-weight: 400;">"</span>*<span style="font-weight: 400;">container</span>*<span style="font-weight: 400;">" in the "</span>*<span style="font-weight: 400;">pod</span>*<span style="font-weight: 400;">" indicating the CPU usage in the node. </span>

<span style="font-weight: 400;">○ </span>**&lt;condition&gt;**<span style="font-weight: 400;">: It will generate a module for each “</span>*<span style="font-weight: 400;">condition</span>*<span style="font-weight: 400;">” in the “</span>*<span style="font-weight: 400;">pod</span>*<span style="font-weight: 400;">” </span><span style="font-weight: 400;">indicating its status. </span>

- **An agent for each deployment**<span style="font-weight: 400;">: Its parent agent will be "</span>*<span style="font-weight: 400;">Kubernetes</span>*<span style="font-weight: 400;">". They will contain these modules: </span>

<span style="font-weight: 400;">○ </span>**Replicas**<span style="font-weight: 400;">: Total number of non-terminated pods targeted by this deployment </span><span style="font-weight: 400;">(their labels match the selector). </span>

<span style="font-weight: 400;">○ </span>**Updated replicas**<span style="font-weight: 400;">: Total number of non-terminated pods targeted by this </span><span style="font-weight: 400;">deployment that have the desired template spec. </span>

<span style="font-weight: 400;">○ </span>**Ready replicas**<span style="font-weight: 400;">: Total number of ready pods targeted by this deployment. </span>

<span style="font-weight: 400;">○ </span>**Available replicas**<span style="font-weight: 400;">: Total number of available pods (ready for at least </span><span style="font-weight: 400;">minReadySeconds) targeted by this deployment. </span>

<span style="font-weight: 400;">○ </span>**Unavailable replicas**<span style="font-weight: 400;">: Total number of unavailable pods targeted by this </span><span style="font-weight: 400;">deployment. This is the total number of pods that are still required for the </span><span style="font-weight: 400;">deployment to have 100% available capacity. They may either be pods that </span><span style="font-weight: 400;">are running but not yet available or pods that still have not been created. </span>

<span style="font-weight: 400;">○ </span>**Available**<span style="font-weight: 400;">: Indicates whether the deployment is available. </span>

<span style="font-weight: 400;">○ </span>**Progressing**<span style="font-weight: 400;">: Indicates whether the deployment is rolling out a new replica </span><span style="font-weight: 400;">set. </span>