The Illumio Cloud-operator is deployed as a Deployment on a desired cluster to stream information about the cluster's resources and network traffic to CloudSecure, and to enforce Illumio network policies by managing corresponding k8s NetworkPolicies in the cluster.
Ensure you have Helm installed and configured on your local machine. Ensure you have access to a Kubernetes cluster and the necessary permissions to deploy resources.
First, package the Helm chart. This will create a .tgz file that can be used for installation.
helm package .
This command will generate a file named cloud-operator-0.0.1.tgz
(or similar, depending on your chart version) in the current directory.
TODO - How to set values.yaml, set through UI or through terraform.
To install the Helm chart, use the following command:
helm install illumio cloud-operator-0.0.1.tgz --namespace illumio-cloud --create-namespace
This command will:
- Install the Helm chart with the release name
illumio
. - Use the packaged chart file
cloud-operator-0.0.1.tgz
. - Deploy the resources into the
illumio-cloud
namespace. - Create the
illumio-cloud
namespace if it does not already exist.
To verify that the Helm chart has been successfully installed, you can use the following command:
helm list --namespace illumio-cloud
This will list all the Helm releases in the illumio-cloud namespace, including the illumio release if the installation was successful.
Uninstalling the Helm Chart If you need to uninstall the Helm chart, use the following command:
helm uninstall illumio --namespace illumio-cloud
This will delete all the resources associated with the illumio
release from the illumio-cloud
namespace.
- go version v1.22.2+
- Kubernetes v1.30+ cluster.
- helm version v3.15.4+
The following make
command will build and push a private build to docker hub
.
docker login
make docker-build docker-push DOCKER_USERNAME=arisweedler386
The following command starts a minikube cluster that will allow you to pull from your local registry
minikube start --insecure-registry="host.docker.internal:5000"
To create a local registry please use the following make
command
make local-registry
Once you have made your local changes, the following make
command will build and push to your local registry
make deploy-local
To deploy using helm and to test the operator using fakeserver here is an example of the command with --set
args
helm install illumio --namespace illumio-cloud oci://ghcr.io/illumio/charts/cloud-operator --version v1.0.5 --create-namespace \ --values ./fakeserver/cloud-operator.fakeserver.yaml,./cloud-operator.image.yaml
-
The
HTTPS_PROXY
environment variable is set in the Helm file, which is read when the client is launched into a Kubernetes container. This ensures that the proxy server is correctly configured for the environment. -
Ensure that the proxy server is accessible from the environment where the Cloud Operator is running.
-
HTTP Requests:
- All HTTP requests made by the Cloud Operator will respect the
HTTPS_PROXY
environment variable. - The
http.ProxyFromEnvironment
function is used to determine the proxy settings.
- All HTTP requests made by the Cloud Operator will respect the
-
gRPC Requests:
- All gRPC requests will also respect the
HTTPS_PROXY
environment variable.
- All gRPC requests will also respect the
This section explains how the binary data for the ConfigMap ipfix-template-sets.yaml
was obtained and its purpose in the Kubernetes cluster.
The ConfigMap ipfix-template-sets.yaml
contains binary data required for IPFIX (IP Flow Information Export) processing. This binary data is used by the cloud operator to decode IPFIX packets and process network flows immediatly upon recieving packets. (Do not need to wait 10 minutes)
-
Generate the Binary File:
- Modify the OVN-K collector code manually to output the IPFIX message that contains the template set received from Open vSwitch to a local volume mount.
- Configure OVN-K to export flows to the collector.
-
Save the Binary File:
- The extracted binary data was saved to a file named
openvswitch.bin
.
- The extracted binary data was saved to a file named
-
Create the ConfigMap:
- Encode the contents of the file in base-64 and add it into the ConfigMap as the
binaryData
field. - Example ConfigMap YAML:
apiVersion: v1 kind: ConfigMap metadata: name: ipfix-template-sets binaryData: openvswitch.bin: <data>
- Encode the contents of the file in base-64 and add it into the ConfigMap as the
The ConfigMap is mounted as a volume in the cloud operator pod. The operator reads the binary data from the mounted volume at startup time and uses it to decode IPFIX messages.
Copyright 2024 Illumio, Inc. All Rights Reserved.
The Illumio Cloud-Operator package is released and distributed as open source software under the Apache License, Version 2.0. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Illumio has no obligation or responsibility related to the package with respect to support, maintenance, availability, security, or otherwise. Please read the entire LICENSE for additional information regarding the permissions and limitations.
For bugs and feature requests, please open a GitHub Issue and label it appropriately.