|
1 |
| -ARG ALPINE_TAG=latest |
2 |
| - |
3 |
| -# Need glibc to support the OpenShift 'oc' CLI |
4 |
| -# https://hub.docker.com/r/frolvlad/alpine-glibc/ |
5 |
| -FROM frolvlad/alpine-glibc:$ALPINE_TAG |
| 1 | +FROM frolvlad/alpine-glibc:latest |
6 | 2 |
|
7 | 3 | # Version of the Viya Monitoring for Kubernetes deployment to download to the container
|
8 | 4 | ARG V4M_TAG="stable"
|
9 |
| - |
10 | 5 | ARG OS=linux
|
11 | 6 | ARG ARCH=amd64
|
12 |
| - |
13 | 7 | ARG HELM_VER=v3.8.0
|
14 | 8 | ARG KUBECTL_VER=v1.23.4
|
15 | 9 | # oc versions: https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/
|
16 | 10 | ARG OC_VER=4.8
|
17 | 11 |
|
18 |
| -# Setting environment variables |
19 |
| -ENV V4M_PATH=/opt/v4m |
20 |
| -ENV KUBECONFIG=$V4M_PATH/.kube/config |
21 |
| -ENV PATH=$V4M_PATH/bin:$PATH |
22 |
| -ENV KEEP_TMP_DIR=true |
| 12 | +# Set environment variables in a single layer |
| 13 | +ENV V4M_PATH=/opt/v4m \ |
| 14 | + KUBECONFIG=/opt/v4m/.kube/config \ |
| 15 | + PATH=/opt/v4m/bin:$PATH \ |
| 16 | + KEEP_TMP_DIR=true \ |
| 17 | + USER_DIR=/opt/v4m/user_dir \ |
| 18 | + TERM=xterm-256color |
23 | 19 |
|
24 |
| -RUN mkdir -p $V4M_PATH/bin $V4M_PATH/.kube $V4M_PATH/user_dir |
25 |
| -WORKDIR $V4M_PATH |
| 20 | +# Create directory structure in a single layer |
| 21 | +RUN mkdir -p $V4M_PATH/bin $V4M_PATH/.kube $V4M_PATH/user_dir && \ |
| 22 | + touch ${KUBECONFIG} && \ |
| 23 | + chmod 600 ${KUBECONFIG} |
26 | 24 |
|
27 |
| -# Create $V4M_PATH/.kube/config if it doesn't exist |
28 |
| -RUN touch ${KUBECONFIG} |
| 25 | +WORKDIR $V4M_PATH |
29 | 26 |
|
30 |
| -# Copy contents from kubeconfig and user_dir to the container |
| 27 | +# Copy configuration files |
31 | 28 | COPY kubeconfig/ /opt/v4m/.kube/
|
32 | 29 | COPY user_dir/ /opt/v4m/user_dir/
|
33 | 30 |
|
34 |
| -RUN chmod 600 ${KUBECONFIG} |
35 |
| -ENV USER_DIR=/opt/v4m/user_dir |
36 |
| -ENV TERM=xterm-256color |
37 |
| - |
38 |
| -# Dependencies needed for python script |
39 |
| -RUN apk add --no-cache python3 py3-pip |
40 |
| -RUN pip3 install opensearch-py |
41 |
| - |
42 |
| -# Download necessary executables |
43 |
| -RUN set -eux; \ |
44 |
| - apk add --no-cache \ |
45 |
| - bash \ |
46 |
| - coreutils \ |
47 |
| - ncurses \ |
48 |
| - curl \ |
49 |
| - git \ |
50 |
| - jq \ |
51 |
| - wget \ |
52 |
| - yq \ |
53 |
| - openssh \ |
54 |
| - procps \ |
55 |
| - openssl \ |
56 |
| - ; |
57 |
| - |
58 |
| -# kubectl |
59 |
| -RUN wget https://storage.googleapis.com/kubernetes-release/release/$KUBECTL_VER/bin/$OS/$ARCH/kubectl; \ |
60 |
| - chmod +x ./kubectl; \ |
61 |
| - mv ./kubectl $V4M_PATH/bin/; \ |
62 |
| - mkdir -p $V4M_PATH/.kube; \ |
63 |
| - touch /opt/v4m/.kube/config |
64 |
| - |
65 |
| -# helm |
66 |
| -RUN wget https://get.helm.sh/helm-$HELM_VER-$OS-$ARCH.tar.gz; \ |
67 |
| - tar -xvf helm-$HELM_VER-$OS-$ARCH.tar.gz; \ |
68 |
| - mv $OS-$ARCH/helm $V4M_PATH/bin/; \ |
69 |
| - rm -rf $OS-$ARCH; \ |
70 |
| - rm helm-$HELM_VER-$OS-$ARCH.tar.gz |
71 |
| - |
72 |
| -# oc |
73 |
| -RUN mkdir oc; \ |
74 |
| - cd oc; \ |
75 |
| - wget https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/stable-${OC_VER}/openshift-client-${OS}.tar.gz; \ |
76 |
| - tar -xvf openshift-client-${OS}.tar.gz; \ |
77 |
| - mv oc $V4M_PATH/bin/; \ |
78 |
| - cd ..; \ |
79 |
| - rm -rf oc/ |
80 |
| - |
81 |
| -# viya4-monitoring-kubernetes |
82 |
| -RUN V4M_BRANCH="$V4M_TAG"; \ |
83 |
| - if [ "$V4M_BRANCH" == "latest" ]; then V4M_BRANCH="stable"; fi; \ |
84 |
| - git clone --depth 1 -b ${V4M_BRANCH} https://github.com/sassoftware/viya4-monitoring-kubernetes |
| 31 | +# Install system dependencies - make sure to complete this step properly |
| 32 | +RUN apk update && \ |
| 33 | + apk add --no-cache \ |
| 34 | + bash \ |
| 35 | + coreutils \ |
| 36 | + ncurses \ |
| 37 | + curl \ |
| 38 | + git \ |
| 39 | + jq \ |
| 40 | + wget \ |
| 41 | + yq \ |
| 42 | + openssh \ |
| 43 | + procps \ |
| 44 | + openssl \ |
| 45 | + python3 \ |
| 46 | + py3-pip |
| 47 | + |
| 48 | +# Install opensearch-py using apk and create a symlink if needed |
| 49 | +RUN pip3 install --break-system-packages opensearch-py |
| 50 | + |
| 51 | +# Install binaries |
| 52 | +RUN wget -q https://storage.googleapis.com/kubernetes-release/release/$KUBECTL_VER/bin/$OS/$ARCH/kubectl && \ |
| 53 | + chmod +x ./kubectl && \ |
| 54 | + mv ./kubectl $V4M_PATH/bin/ && \ |
| 55 | + # Install helm |
| 56 | + wget -q https://get.helm.sh/helm-$HELM_VER-$OS-$ARCH.tar.gz && \ |
| 57 | + tar -xf helm-$HELM_VER-$OS-$ARCH.tar.gz && \ |
| 58 | + mv $OS-$ARCH/helm $V4M_PATH/bin/ && \ |
| 59 | + # Install oc |
| 60 | + wget -q https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/stable-${OC_VER}/openshift-client-${OS}.tar.gz && \ |
| 61 | + tar -xf openshift-client-${OS}.tar.gz && \ |
| 62 | + mv oc $V4M_PATH/bin/ && \ |
| 63 | + # Clone repository |
| 64 | + V4M_BRANCH="${V4M_TAG}" && \ |
| 65 | + if [ "$V4M_BRANCH" == "latest" ]; then V4M_BRANCH="stable"; fi && \ |
| 66 | + git clone --depth 1 -b ${V4M_BRANCH} https://github.com/sassoftware/viya4-monitoring-kubernetes && \ |
| 67 | + # Cleanup |
| 68 | + rm -rf helm-$HELM_VER-$OS-$ARCH.tar.gz $OS-$ARCH openshift-client-${OS}.tar.gz |
85 | 69 |
|
86 | 70 | WORKDIR $V4M_PATH/viya4-monitoring-kubernetes
|
| 71 | + |
| 72 | +# Add a health check or default CMD if appropriate |
| 73 | +CMD ["bash"] |
0 commit comments