diff --git a/k8s/kkweon-okteto/envoy-config.yaml b/k8s/kkweon-okteto/envoy-config.yaml new file mode 100644 index 00000000..2e656fe1 --- /dev/null +++ b/k8s/kkweon-okteto/envoy-config.yaml @@ -0,0 +1,83 @@ +apiVersion: v1 +data: + envoy.yaml: |- + admin: + access_log_path: /tmp/admin_access.log + address: + socket_address: + address: 0.0.0.0 + port_value: 9000 + static_resources: + listeners: + - name: listener_0 + address: + socket_address: + address: 0.0.0.0 + port_value: 8080 + filter_chains: + - filters: + - name: envoy.filters.network.http_connection_manager + typed_config: + "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager + stat_prefix: ingress_http + access_log: + - name: envoy.access_loggers.stdout + typed_config: + "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog + http_filters: + - name: envoy.filters.http.health_check + typed_config: + "@type": type.googleapis.com/envoy.extensions.filters.http.health_check.v3.HealthCheck + pass_through_mode: false + headers: + - name: ":path" + exact_match: "/healthz" + - name: "x-envoy-livenessprobe" + exact_match: "healthz" + - name: envoy.filters.http.grpc_web + - name: envoy.filters.http.cors + - name: envoy.filters.http.router + route_config: + name: local_route + virtual_hosts: + - name: local_service + domains: [ "*" ] + routes: + - match: + prefix: "/" + route: + cluster: grpc_service + timeout: 0s + max_stream_duration: + grpc_timeout_header_max: 0s + cors: + allow_origin_string_match: + - prefix: "*" + allow_methods: GET, PUT, DELETE, POST, OPTIONS + allow_headers: keep-alive,user-agent,cache-control,content-type,content-transfer-encoding,custom-header-1,x-accept-content-transfer-encoding,x-accept-response-streaming,x-user-agent,x-grpc-web,grpc-timeout + max_age: "1728000" + expose_headers: custom-header-1,grpc-status,grpc-message + clusters: + - name: grpc_service + connect_timeout: 0.25s + type: logical_dns + http2_protocol_options: {} + lb_policy: round_robin + load_assignment: + cluster_name: cluster_0 + endpoints: + - lb_endpoints: + - endpoint: + address: + socket_address: + address: server + port_value: 9000 + health_checks: + timeout: 1s + interval: 10s + unhealthy_threshold: 2 + healthy_threshold: 2 + grpc_health_check: {} +kind: ConfigMap +metadata: + name: envoy-config \ No newline at end of file diff --git a/k8s/kkweon-okteto/envoy-deployment.yaml b/k8s/kkweon-okteto/envoy-deployment.yaml new file mode 100644 index 00000000..4ae91034 --- /dev/null +++ b/k8s/kkweon-okteto/envoy-deployment.yaml @@ -0,0 +1,80 @@ +kind: Ingress +apiVersion: networking.k8s.io/v1 +metadata: + name: envoy + annotations: + dev.okteto.com/generate-host: "true" + kubernetes.io/ingress.class: "nginx" + nginx.ingress.kubernetes.io/ssl-redirect: "true" +spec: + rules: + - host: this-name-does-not-matter + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: envoy + port: + name: envoy +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app: envoy + name: envoy +spec: + ports: + - name: envoy + port: 8080 + protocol: TCP + targetPort: envoy + - name: admin + port: 9000 + protocol: TCP + targetPort: admin + selector: + app: envoy + type: ClusterIP +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: envoy + name: envoy +spec: + replicas: 1 + selector: + matchLabels: + app: envoy + template: + metadata: + labels: + app: envoy + spec: + containers: + - image: envoyproxy/envoy-alpine:v1.18-latest + name: envoy-distroless + ports: + - containerPort: 9000 + name: admin + - containerPort: 8080 + name: envoy + volumeMounts: + - mountPath: /etc/envoy/envoy.yaml + subPath: envoy.yaml + name: envoy-config + readinessProbe: + httpGet: + port: envoy + httpHeaders: + - name: x-envoy-livenessprobe + value: healthz + path: /healthz + volumes: + - name: envoy-config + configMap: + name: envoy-config \ No newline at end of file diff --git a/okteto-pipeline.yaml b/okteto-pipeline.yaml index fb2889cd..04635b21 100644 --- a/okteto-pipeline.yaml +++ b/okteto-pipeline.yaml @@ -3,4 +3,6 @@ deploy: - for file in k8s/kkweon-okteto/*.yaml; do envsubst < $file | kubectl apply -f -; done - kubectl set image deployment server server=okteto.dev/codingpot-pr12er-server:${OKTETO_GIT_COMMIT} - kubectl rollout restart deployment grafana-agent - - kubectl rollout status deployment server && kubectl rollout status deployment grafana-agent \ No newline at end of file + - kubectl rollout status deployment server + - kubectl rollout status deployment grafana-agent + - kubectl rollout status deployment envoy \ No newline at end of file