Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove hardcode from configmap template for haproxy chart. #233

Merged

Conversation

MemberIT
Copy link
Contributor

@MemberIT MemberIT commented Apr 3, 2024

No description provided.

@MemberIT MemberIT force-pushed the remove-hardcode-from-template-haproxy branch from d13ece7 to 96ad202 Compare April 3, 2024 11:11
@dkorunic
Copy link
Member

dkorunic commented Apr 3, 2024

I don't think that this patch really improves anything?

@MemberIT
Copy link
Contributor Author

MemberIT commented Apr 3, 2024

This patch protects you from getting a default HAProxy configuration in the event of an accidental typo in variables configMount.mountPath and subPath. For example:

# git diff
-  mountPath: /usr/local/etc/haproxy/haproxy.cfg    # EE images use /etc/hapee-VERSION/hapee-lb.cfg
-  subPath: haproxy.cfg                             # EE images use hapee-lb.cfg
+  mountPath: /usr/local/etc/haproxy/haproxy.cfga    # EE images use /etc/hapee-VERSION/hapee-lb.cfg
+  subPath: haproxy.cfga                             # EE images use hapee-lb.cfg
# kubectl exec -it haproxy-k8k4h -- ls /usr/local/etc/haproxy
dataplaneapi.yml  errors            haproxy.cfg       haproxy.cfga

# kubectl exec -it haproxy-k8k4h -- cat /usr/local/etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   https://www.haproxy.org/download/2.8/doc/configuration.txt
#   https://cbonte.github.io/haproxy-dconv/2.8/configuration.html
#
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    # daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

#---------------------------------------------------------------------
# example how to define user and enable Data Plane API on tcp/5555
# more information: https://github.com/haproxytech/dataplaneapi and
#   https://www.haproxy.com/documentation/hapee/2-0r1/configuration/dataplaneapi/
#---------------------------------------------------------------------
# userlist haproxy-dataplaneapi
#     user admin insecure-password mypassword
#
# program api
#    command /usr/bin/dataplaneapi --host 0.0.0.0 --port 5555 --haproxy-bin /usr/sbin/haproxy --config-file /etc/haproxy/haproxy.cfg --reload-cmd "kill -SIGUSR2 1" --restart-cmd "kill -SIGUSR2 1" --reload-delay 5 --userlist hapee-dataplaneapi
#    no option start-on-reload

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  main
    bind *:80
    # bind *:443 ssl # To be completed ....

    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js

    use_backend static          if url_static
    default_backend             app

#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
    balance     roundrobin
    server      static1 127.0.0.1:4331 check
    server      static2 127.0.0.1:4332 check

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
    balance     roundrobin
    server  app1 127.0.0.1:5001 check
    server  app2 127.0.0.1:5002 check
    server  app3 127.0.0.1:5003 check
    server  app4 127.0.0.1:5004 check

The chart also has the ability to redefine the path to the HAProxy config, and without this patch, it does not work.

@dkorunic
Copy link
Member

dkorunic commented Apr 3, 2024

I must admit I haven't thought of anyone doing a typo in those two variables, since they should generally be left untouched, but sure, thanks for doing this. Looks good, I'll merge this right away.

@dkorunic dkorunic merged commit dbf53cc into haproxytech:main Apr 3, 2024
1 check passed
MemberIT added a commit to MemberIT/haproxy-helm-charts that referenced this pull request Apr 3, 2024
MemberIT added a commit to MemberIT/haproxy-helm-charts that referenced this pull request Apr 3, 2024
dkorunic pushed a commit that referenced this pull request Apr 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants