forked from samsung-cnct/kraken-tools
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
158 lines (126 loc) · 7.22 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
FROM alpine:3.6
MAINTAINER Michael Venezia <mvenezia@gmail.com>
ENV TERRAFORM_VERSION=0.8.6
ENV TF_COREOSBOX_VERSION=v0.0.3
ENV TF_DISTROIMAGE_VERSION=v0.0.1
ENV TF_PROVIDEREXECUTE_VERSION=v0.0.4
ENV GCLOUD_SDK_VERSION=162.0.0
ENV GCLOUD_FILE_NAME=google-cloud-sdk-${GCLOUD_SDK_VERSION}-linux-x86_64.tar.gz
ENV GCLOUD_SDK_URL=https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/${GCLOUD_FILE_NAME}
ENV CLOUDSDK_PYTHON_SITEPACKAGES 1
# google cloud kubectl is superceeded by downloaded kubectl
ENV PATH $PATH:/google-cloud-sdk/bin
ENV ETCD_VERSION=v3.2.5
ENV ETCDCTL_API=3
ENV K8S_VERSION=v1.7.6
ENV K8S_HELM_VERSION=v2.6.1
ENV K8S_VERSION_1_5=v1.5.8
ENV K8S_VERSION_1_6=v1.6.11
ENV K8S_VERSION_1_7=v1.7.8
ENV K8S_HELM_VERSION_1_5=v2.3.1
ENV K8S_HELM_VERSION_1_6=v2.5.1
ENV K8S_HELM_VERSION_1_7=v2.6.2
#Latest version of tools
ENV LATEST=v1.7
ENV K8S_VERSION_LATEST=$K8S_VERSION_1_7
ENV K8S_HELM_VERSION_LATEST=$K8S_HELM_VERSION_1_7
ENV GOPATH /go
ENV GO15VENDOREXPERIMENT 1
ENV HELM_HOME=/etc/helm
ENV HELM_PLUGIN=/etc/helm/plugins
ENV APP_REGISTRY_PLUGIN_RELEASE=v0.7.0
ENV APP_REGISTRY_URL=https://github.com/app-registry/appr-helm-plugin/releases/download/${APP_REGISTRY_PLUGIN_RELEASE}/helm-registry_linux.tar.gz
# Alpine
ADD build/alpine-builds /alpine-builds
ENV APK_PACKAGES="bash ca-certificates openssl openssh python py-openssl py-pip py-cryptography py-cffi zip unzip wget util-linux bind-tools"
ENV APK_DEV_PACKAGES="gcc g++ git make libffi-dev linux-headers musl-dev libc-dev openssl-dev python-dev unzip mkinitfs kmod mtools squashfs-tools"
RUN apk add --update --no-cache ${APK_PACKAGES} ${APK_DEV_PACKAGES} && \
/alpine-builds/build-docker.sh && \
rm -rf /alpine-builds
# Terraform
RUN wget -q https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip && \
unzip terraform_${TERRAFORM_VERSION}_linux_amd64.zip && \
rm terraform_${TERRAFORM_VERSION}_linux_amd64.zip && \
mv terraform /usr/bin/
# Adding Terraform Provider Execute addon
RUN wget -q https://github.com/samsung-cnct/terraform-provider-execute/releases/download/${TF_PROVIDEREXECUTE_VERSION}/terraform-provider-execute_linux_amd64.tar.gz && \
tar -zxvf terraform-provider-execute_linux_amd64.tar.gz && \
rm terraform-provider-execute_linux_amd64.tar.gz && \
mv terraform-provider-execute /usr/bin/
# Adding Terraform CoreOS Box addon
RUN wget -q https://github.com/samsung-cnct/terraform-provider-coreosbox/releases/download/${TF_COREOSBOX_VERSION}/terraform-provider-coreosbox_linux_amd64.tar.gz && \
tar -zxvf terraform-provider-coreosbox_linux_amd64.tar.gz && \
rm terraform-provider-coreosbox_linux_amd64.tar.gz && \
mv terraform-provider-coreosbox /usr/bin/
# Adding Terraform Distro Image Selector addon
RUN wget -q https://github.com/samsung-cnct/terraform-provider-distroimage/releases/download/${TF_DISTROIMAGE_VERSION}/terraform-provider-distroimage_linux_amd64.tar.gz && \
tar -zxvf terraform-provider-distroimage_linux_amd64.tar.gz && \
rm terraform-provider-distroimage_linux_amd64.tar.gz && \
mv terraform-provider-distro /usr/bin/
# Etcd
RUN wget -q https://github.com/coreos/etcd/releases/download//${ETCD_VERSION}/etcd-${ETCD_VERSION}-linux-amd64.tar.gz && \
tar -zxvf etcd-${ETCD_VERSION}-linux-amd64.tar.gz && \
cp etcd-${ETCD_VERSION}-linux-amd64/etcdctl /usr/local/bin && \
rm -rf etcd-${ETCD_VERSION}-linux-amd64/ && \
rm -f etcd-${ETCD_VERSION}-linux-amd64.tar.gz
# Creating path for helm and kubectl executables
RUN mkdir -p /opt/cnct/kubernetes/v1.5/bin \
/opt/cnct/kubernetes/v1.6/bin \
/opt/cnct/kubernetes/v1.7/bin \
/etc/helm/plugins
# Kubectl
RUN wget -q https://storage.googleapis.com/kubernetes-release/release/${K8S_VERSION_1_5}/bin/linux/amd64/kubectl && \
chmod a+x kubectl && \
mv kubectl /opt/cnct/kubernetes/v1.5/bin
RUN wget -q https://storage.googleapis.com/kubernetes-release/release/${K8S_VERSION_1_6}/bin/linux/amd64/kubectl && \
chmod a+x kubectl && \
mv kubectl /opt/cnct/kubernetes/v1.6/bin
RUN wget -q https://storage.googleapis.com/kubernetes-release/release/${K8S_VERSION_1_7}/bin/linux/amd64/kubectl && \
chmod a+x kubectl && \
mv kubectl /opt/cnct/kubernetes/v1.7/bin
# Helm
RUN wget -q http://storage.googleapis.com/kubernetes-helm/helm-${K8S_HELM_VERSION_1_5}-linux-amd64.tar.gz && \
tar -zxvf helm-${K8S_HELM_VERSION_1_5}-linux-amd64.tar.gz && \
mv linux-amd64/helm /opt/cnct/kubernetes/v1.5/bin/helm && \
rm -rf linux-amd64 helm-${K8S_HELM_VERSION_1_5}-linux-amd64.tar.gz
RUN wget -q http://storage.googleapis.com/kubernetes-helm/helm-${K8S_HELM_VERSION_1_6}-linux-amd64.tar.gz && \
tar -zxvf helm-${K8S_HELM_VERSION_1_6}-linux-amd64.tar.gz && \
mv linux-amd64/helm /opt/cnct/kubernetes/v1.6/bin/helm && \
rm -rf linux-amd64 helm-${K8S_HELM_VERSION_1_6}-linux-amd64.tar.gz
RUN wget -q http://storage.googleapis.com/kubernetes-helm/helm-${K8S_HELM_VERSION_1_7}-linux-amd64.tar.gz && \
tar -zxvf helm-${K8S_HELM_VERSION_1_7}-linux-amd64.tar.gz && \
mv linux-amd64/helm /opt/cnct/kubernetes/v1.7/bin/helm && \
rm -rf linux-amd64 helm-${K8S_HELM_VERSION_1_7}-linux-amd64.tar.gz
RUN ln -s /opt/cnct/kubernetes/${LATEST} /opt/cnct/kubernetes/latest && \
ln -s /opt/cnct/kubernetes/${LATEST}/bin/kubectl /usr/bin/ && \
ln -s /opt/cnct/kubernetes/${LATEST}/bin/helm /usr/bin/
# Python (including ansible)
ADD build/requirements.txt /requirements.txt
ADD build/gcloud_tree.py /gcloud_tree.py
ADD tests/aws-testing.sh /aws-testing.sh
ADD tests/gke-testing.sh /gke-testing.sh
# Install things that need compilers, etc
RUN pip install -r /requirements.txt
# Delete build-related packages
RUN apk del ${APK_DEV_PACKAGES} && \
rm -rfv ~/.cache && \
rm -rfv /var/cache/apk/*
# Google cloud work (copied from https://github.com/GoogleCloudPlatform/cloud-sdk-docker/blob/master/alpine/Dockerfile )
RUN wget -q ${GCLOUD_SDK_URL} && \
tar xzf ${GCLOUD_FILE_NAME} && \
rm ${GCLOUD_FILE_NAME} && \
ln -s /lib /lib64 && \
gcloud config set core/disable_usage_reporting true && \
gcloud config set component_manager/disable_update_check true && \
gcloud config set metrics/environment github_docker_image
# Install the help app registry plugin
RUN mkdir -p /etc/helm/plugins/appr && \
cd ${HELM_PLUGIN} && wget ${APP_REGISTRY_URL} -O - | tar -zxv && \
helm registry version placeholder
# Crash application
RUN wget -q https://github.com/samsung-cnct/k2-crash-application/releases/download/0.1.0/k2-crash-application_0.1.0_linux_amd64.tar.gz && \
tar -zxvf k2-crash-application_0.1.0_linux_amd64.tar.gz && \
mv k2-crash-application /usr/bin/k2-crash-application && \
rm -f k2-crash-application_0.1.0_linux_amd64.tar.gz
# Quick verification script to confirm all expected binaries are present.
ADD tests/internal_tooling.sh /internal_tooling_test.sh