===================== SSL endpoints check ===================== Utility for checking if all of the ports exposed outside of Kubernetes cluster use SSL tunnels. Prerequisites ------------- Configuration ~~~~~~~~~~~~~ ``-kubeconfig`` Optional unless ``$HOME`` is not set. Defaults to ``$HOME/.kube/config``. ``-xfail`` Optional list of services with corresponding NodePorts which do not use SSL tunnels. These ports are known as "expected failures" and will not be checked. Dependencies ~~~~~~~~~~~~ - nmap_ .. _nmap: https://nmap.org/book/install.html Build (local) ~~~~~~~~~~~~~ - go_ (1.11+, tested on 1.13) .. _go: https://golang.org/doc/install Build (Docker) ~~~~~~~~~~~~~~ - Docker_ engine - make (optional) .. _Docker: https://docs.docker.com/install Test ~~~~ - Ginkgo_ - GolangCI-Lint_ (optional) .. _Ginkgo: https://onsi.github.io/ginkgo/#getting-ginkgo .. _GolangCI-Lint: https://github.com/golangci/golangci-lint#install Building -------- Command (local) ~~~~~~~~~~~~~~~ .. code-block:: shell $ mkdir bin $ go build -o bin/sslendpoints Additional ``bin`` directory and specifying ``go build`` output are used to declutter project and maintain compatibility with Docker-based process. Running ``go build`` without parameters will create ``sslendpoints`` binary in current directory. Command (Docker) ~~~~~~~~~~~~~~~~ .. code-block:: shell $ make # or commands from corresponding "make" targets Running ------- Command (local) ~~~~~~~~~~~~~~~ .. code-block:: shell $ bin/sslendpoints [-kubeconfig KUBECONFIG] [-xfail XFAIL] Command (Docker) ~~~~~~~~~~~~~~~~ .. code-block:: shell $ docker run --rm --volume $KUBECONFIG:/.kube/config \ sslendpoints-build-img /bin/sslendpoints $ docker run --rm --volume $KUBECONFIG:/opt/config \ sslendpoints-build-img /bin/sslendpoints -kubeconfig /opt/config $ docker run --rm \ --volume $KUBECONFIG:/opt/config \ --volume $XFAIL:/opt/xfail \ sslendpoints-build-img /bin/sslendpoints \ -kubeconfig /opt/config -xfail /opt/xfail Output ~~~~~~ .. code-block:: shell $ ./sslendpoints -kubeconfig ~/.kube/config.onap 2020/03/17 10:40:29 Host 192.168.2.10 2020/03/17 10:40:29 PORT SERVICE 2020/03/17 10:40:29 30203 sdnc-dgbuilder 2020/03/17 10:40:29 30204 sdc-be 2020/03/17 10:40:29 30207 sdc-fe 2020/03/17 10:40:29 30220 aai-sparky-be 2020/03/17 10:40:29 30226 message-router 2020/03/17 10:40:29 30233 aai 2020/03/17 10:40:29 30256 sdc-wfd-fe 2020/03/17 10:40:29 30257 sdc-wfd-be 2020/03/17 10:40:29 30264 sdc-dcae-fe 2020/03/17 10:40:29 30266 sdc-dcae-dt 2020/03/17 10:40:29 30279 aai-babel 2020/03/17 10:40:29 30406 so-vnfm-adapter 2020/03/17 10:40:29 There are 12 non-SSL NodePorts in the cluster Testing ------- .. code-block:: shell $ go test ./... # basic $ ginkgo -r # pretty $ golangci-lint run # linters