I am trying to create a deployment that can receive firewall logs. I have purchased a Google Cloud Domain.
I managed to run LimaCharlie Adapter without a Ingress (with LoadBalancer Service). After introducing the ingress I get error 502 Server Error: All backend services are in UNHEALTHY state.
This is a drawing of my wanted setup:
My source codes
kube-manifest/deployment-and-service.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: pa440-ekeberg-deployment
labels:
app: pa440-ekeberg
spec:
replicas: 1
selector:
matchLabels:
app: pa440-ekeberg
template:
metadata:
labels:
app: pa440-ekeberg
spec:
containers:
- name: pa440-ekeberg
image: europe-north1-docker.pkg.dev/collectorz/pa440-ekeberg-repo/pa440-ekeberg:latest
ports:
- containerPort: 8080
resources:
requests:
memory: "1Gi"
cpu: "500m"
ephemeral-storage: "1Gi"
limits:
memory: "1Gi"
cpu: "500m"
ephemeral-storage: "1Gi"
---
apiVersion: v1
kind: Service
metadata:
name: pa440-ekeberg-nodeport-service
labels:
app: pa440-ekeberg
annotations:
spec:
type: NodePort
selector:
app: pa440-ekeberg
ports:
- port: 80
targetPort: 8080
kube-manifests/ingress-ssl.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: pa440-ekeberg-ingress-ssl
annotations:
# External Load Balancer
spec.ingressClassName: "gce"
# Static IP for Ingress Service
kubernetes.io/ingress.global-static-ip-name: "pa440-ekeberg-global-ip"
# Google Managed SSL Certificates
networking.gke.io/managed-certificates: pa440-ekeberg-managed-cert-for-ingress
spec:
defaultBackend:
service:
name: pa440-ekeberg-nodeport-service
port:
number: 80
kube-manifests/managed-certificate.yaml
apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
name: pa440-ekeberg-managed-cert-for-ingress
spec:
domains:
- 1.mydomain.com
Dockerfile
# Specify Ubuntu
FROM ubuntu:latest
# Update
RUN apt-get update && apt-get install -y apt-utils file
RUN apt-get install -y ca-certificates
# Open port
EXPOSE 8080
# Download LimaCharlie Adapter (will download as file name "64" to /opt/64)
ADD https://downloads.limacharlie.io/adapter/linux/64 /opt/limacharlie/lc_adapter
RUN chmod +x /opt/limacharlie/lc_adapter
RUN echo Running!
CMD ["/opt/limacharlie/lc_adapter", "syslog", "client_options.identity.installation_key=a-b-c-d-e", "client_options.identity.oid=f-g-h-i-j", "client_options.platform=text", "client_options.hostname=fw-pa440-ekeberg-kubernetes", "client_options.sensor_seed_key=fw-pa440-ekeberg-kubernetes", "port=8080", "iface=0.0.0.0", "is_udp=false"]
My steps to deploy the app:
1. Create global IP:
gcloud compute addresses create pa440-ekeberg-global-ip --global
2 Create A record:
Go to Network services → Cloud DNS > mydomain.com > Add Standard
- DNS name: 1.mydomain.com
- Resource record type = A
- TTL: 5 minutes
- IPv4 Adress: The global IP
3 Create Repo:
gcloud artifacts repositories create pa440-ekeberg-repo --project=collectorz --repository-format=docker --location=europe-north1 --description=“Docker repository”
4 Build a new version:
gcloud builds submit --tag europe-north1-docker.pkg.dev/collectorz/pa440-ekeberg-repo/pa440-ekeberg .
5 Connect to cluster:
gcloud container clusters get-credentials autopilot-cluster-1 --region europe-north1 --project collectorz
6 Apply all:
kubectl apply -f kube-manifests
Results
Deployment: OK
Pods: Running
NodePort Service: OK
Ingress SSL: All backend services are in UNHEALTHY state
SSL Certificate (https://console.cloud.google.com/security/ccm/list/lbCertificates Active and in used by target https proxies.
What can I do to debug this?