This unofficial gist contains a list of commands typically ran for Kubernetes and Runtime Fabric MuleSoft.
- Install Java using any of the methods available for your OS, e.g. download the binaries and place them in a local folder (recommended to use a simple path with no spaces), OR, follow any installation method for your OS.
- https://adoptium.net/en-GB/temurin/archive/?version=8
- Must Configure the JAVA_HOME environment variable in your OS,
- Test that Java it's properly installed:
java -versionand also runjavac -version
At the moment of writing this guide, the current maven version 3.9.0 it's not supported. (downgrade previous version)
- Download a previous version of maven 3.8.4 - 3.8.7 from here https://archive.apache.org/dist/maven/maven-3/
- Install Maven using any of the methods available OS, e.g. https://maven.apache.org/guides/getting-started/windows-prerequisites.html
- Configure the MAVEN_HOME environment variable, e.g.
MAVEN_HOME="/Users/andrespedesmorales/OSS/apache-maven-3.8.7/bin" - Test that maven it's properly configured running
mvn -v, compare that the java version used by maven it's the same previously configured.
Both CLIs are required.
- AWS IAM Auth, please follow the respective guide for your OS: https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html
- AWS CLI Installation guide: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
- Please follow the official guide: https://kubernetes.io/docs/tasks/tools/#kubectl
- Check the AWS User
aws --version (good checking the version of AWS CLI and AWS IAM Authenticator)
aws-iam-authenticator version
aws sts get-caller-identity
- Check the connectivity with the Kubernetes Cluster
kubectl version --client (There's a know bug from the kubectl if version is higher than 1.23.14)
kubectl cluster-info
kubectl get --raw='/healthz?verbose'
- RTF Installation, see more details at RTF Install Docs
rtfctl validate VALIDATIONDATA
rtfctl install VALIDATIONDATA
Verify the installation is correct by running
kubectl get pods -n rtf
kubectl get services
| NAME | TYPE | CLUSTER-IP | EXTERNAL-IP | PORT(S) | AGE |
|---|---|---|---|---|---|
| kubernetes | ClusterIP | 10.100.0.1 | 443/TCP | 47m |
- Install License
rtfctl apply mule-license '2+W35iUhD9mO1v8Y2x5Pyn+Sd0tZMzUhblmMfPYL9zaMgZquTwfP7RtwMBBiJnIja2qJoaEPMIXERia3OPolat94p0nE76wOmzmkwWZqlRhs6raZEfD8D4RsXGqUr8CZ9zWFdMkxmt2hYNRX7eEc9vOKgmxv0TvQVZF2AeUMqCaGX0lpmQWSXsCHpnuyj9JURTHn3d9Eyv0dytL5yjWh8zAoEBPqAe6WzBqFfy8UfHgTYSfQAqI/MH826XbPTwogFIOHeMzk/YBnt1YRkIiKq9EA0A/lGxUa8/UYZ8HvEEIbwoZDf1+euveA3wO5QzdQqKLMm2mED1BlkR8m+7ORy6iRURiAH/Y0RYE2izZZgHMnNJol8zxWM2+Ocq+iMuzbsbBgUz7WIUmQYgBCfRte51Cqykn5YgSuUBjL34JMxw7p2hRXzWACcUlv0mPD3oAlLUkRq8E5AY+5C3wl0UjwhDUrAkRInEjNpBcdNnPIvyCbeqM2GxMHgJFRAKdVmmGq9IER+UU3tekrZ4VbNyR8fg7+Zm5cL/E77sTzWNBzxAbbgdaMOztHh1hDhuXORpGXq9Ra47IHPPOv5UuqHsEot3BDAArwKNZWJU8lTbNpol8vqLesKU6yqwabCQBf24+M6TQbJSkRFR2Y2m4qdR6HLgSf2/NCvZm0uwFhO/B5FOa8Gd0Zbppig6ufiegi8hr/R2/cMJz6Bd29NKdwpS8UfBMxCL1FQGwnBae2bouhk0K9h/GNxEhr5iHxfkyCZi9B59SdtKjyJJgTk+g9ttmLIQi6iM7C/MI/SPxrtRuioh2stO9cqd1Vml0Z9Ytke8xIXMNc9PuV/NLrO8Ezy5EGtw=='
Get all running pods in ALL namespaces
kubectl get pods -A --field-selector=status.phase=Running
Installation logs
kubectl logs rtf-install-job-ljpdz -n rtf > install.log
Get Events (audit your cluster)
kubectl get events -A > events.log
- Get extra information about your pods
kubectl get pods -A -o yaml
kubectl get pods -A -o json
kubectl get pods -A -o wide
Restart the RTF Agent Pod
kubectl delete pods -n rtf -lapp=agent
Enable Log4J Custom Appenders from Mule Apps
kubectl -nrtf patch secret custom-properties -p '{"data":{"CUSTOM_LOG4J_ENABLED":"dHJ1ZQ=="}}'
See the secret content in plain text
kubectl get secret custom-properties -n rtf -o json | jq -r '.data | map_values(@base64d)'
More details at Deploy RTF-app via API
Change the namespace value by the one where the mule apps are running.
JSON Output with the CPU Limits assigned to each app container
kubectl get pods -n ed890e53-f35f-4ff8-9c96-91f95dcc82e4 -o json | jq '.items[] | {name: .metadata.name, containers: [.spec.containers[] | select(.name == "app") | {name: .name, cpuLimits: .resources.limits.cpu}]}'
- https://meetups.mulesoft.com/events/details/mulesoft-online-group-english-presents-externalize-tls-certificates-and-properties-for-runtime-fabric-appliance-and-self-managed-kubernetes/
- https://help.mulesoft.com/s/article/How-to-deploy-a-Mule-4-app-s-JAR-file-completely-via-API-to-RTF
- Meetup RTF: https://www.youtube.com/watch?v=qRTGhq-gU_E&ab_channel=AkshataSawant
- Ingress Load Balancer help: https://help.mulesoft.com/s/article/Path-based-Nginx-Ingress-Routing-Example-for-Runtime-Fabric-on-Self-Managed-Kubernetes
- https://help.mulesoft.com/s/article/How-to-Get-Runtime-Fabric-RTF-CPU-Reserved-and-Limit-for-Self-Managed-Kubernetes-and-RTF-Appliance
kubectl logs mule-info-86b8f77d95-mv6tl -n 82bcfacc-14f6-437f-abe3-069d0a25bee2 -c appCheck license applied to mule container