Skip to content

Commit d477aa7

Browse files
committed
first commit
1 parent 8cfc8cd commit d477aa7

8 files changed

+118
-1
lines changed

.gitignore

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
dockercfg
2+
codeship.aes
3+
kubeconfigdata
4+
env
5+
test-env
6+
k8s-env

Dockerfile

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
FROM ruby:2.3
2+
3+
RUN apt-get update && apt-get install -y curl
4+
RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
5+
RUN chmod +x ./kubectl
6+
RUN mv ./kubectl /usr/local/bin/kubectl
7+
8+
ENV HOME /root
9+
WORKDIR $HOME
10+
11+
COPY env_var_helper_client.sh env_var_helper_client.rb ./
12+
RUN chmod +x env_var_helper_client.sh
13+
14+
ENTRYPOINT ["./env_var_helper_client.sh"]

README.md

+42-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,42 @@
1-
# kubectl
1+
# codeship/kubectl container
2+
3+
`kubectl` binary container, with guidance for configuring credentials (including secrets) to issue commands to your cluster from a Codeship Pro step.
4+
5+
## Distill your k8s configurations to single file
6+
7+
```shell
8+
kubectl config view --flatten > kubeconfigdata # add --minify flag to reduce info to current context
9+
```
10+
11+
## Copy contents to env var file using our codeship/env-var-helper container
12+
13+
```shell
14+
docker run --rm -it -v $(pwd):/files codeship/env-var-helper cp kubeconfigdata:/root/.kube/config k8s-env
15+
```
16+
17+
Check out the [codeship/env-var-helper README](https://github.com/codeship-library/docker-utilities/tree/master/env-var-helper) for more information.
18+
19+
## Encrypt the file, remove files and/or add to `.gitignore`
20+
21+
jet encrypt k8s-env k8s-env.encrypted
22+
rm kubeconfigdata k8s-env
23+
24+
## Configure the service and steps into the build with the following as guidance
25+
26+
```shell
27+
# codeship-services.yml
28+
29+
kubectl:
30+
build:
31+
image: codeship/kubectl
32+
dockerfile: Dockerfile
33+
encrypted_env_file: k8s-env.encrypted
34+
```
35+
36+
```shell
37+
# codeship-steps.yml
38+
39+
- name: check response to kubectl config
40+
service: kubectl
41+
command: kubectl config view
42+
```

codeship-services.yml

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
kubectl:
2+
build:
3+
image: codeship/kubectl
4+
dockerfile: Dockerfile
5+
encrypted_env_file: k8s-env.encrypted

codeship-steps.yml

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
- name: check response to kubectl config
2+
command: kubectl config view
3+
service: kubectl
4+
5+
- name: push codeship/kubectl
6+
tag: master
7+
type: push
8+
service: kubectl
9+
image_name: codeship/kubectl
10+
encrypted_dockercfg_path: dockercfg.encrypted

env_var_helper_client.rb

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
require 'json'
2+
3+
env_var_helper_data = JSON.parse(ENV['ENV_VAR_HELPER'])
4+
5+
action = ARGV[0]
6+
case action
7+
when 'count_entries'
8+
puts env_var_helper_data.count
9+
when 'container_destination'
10+
i = ARGV[1].to_i
11+
puts env_var_helper_data[i]['container_destination']
12+
when 'contents'
13+
i = ARGV[1].to_i
14+
puts env_var_helper_data[i]['content']
15+
end

env_var_helper_client.sh

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
OLD_IFS="$IFS"
6+
IFS=
7+
8+
TOTAL_ENTRIES=$(ruby env_var_helper_client.rb count_entries)
9+
i="0"
10+
11+
while [ "$i" -lt $TOTAL_ENTRIES ]
12+
do
13+
FULL_PATH=$(ruby env_var_helper_client.rb container_destination $i)
14+
DIR_PATH=$(dirname "${FULL_PATH}")
15+
mkdir -p $DIR_PATH
16+
17+
FILE_CONTENTS=$(ruby env_var_helper_client.rb contents $i)
18+
echo -e $FILE_CONTENTS > $FULL_PATH
19+
i=$[$i+1]
20+
done
21+
22+
IFS="$OLD_IFS"
23+
24+
"$@"

k8s-env.encrypted

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
codeship:v2
2+
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

0 commit comments

Comments
 (0)