Skip to content

Instantly share code, notes, and snippets.

@zaki-lknr
Created May 18, 2020 06:04
Show Gist options
  • Save zaki-lknr/399d46152256928463937f7649995804 to your computer and use it in GitHub Desktop.
Save zaki-lknr/399d46152256928463937f7649995804 to your computer and use it in GitHub Desktop.
skaffoldおためし

install

[zaki@k8s-master01 ~]$ curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 40.7M  100 40.7M    0     0  7532k      0  0:00:05  0:00:05 --:--:-- 8241k
[zaki@k8s-master01 ~]$ sudo install skaffold /usr/local/bin/
[sudo] zaki のパスワード:
[zaki@k8s-master01 ~]$ skaffold version
v1.9.1
[zaki@k8s-master01 ~]$ 

sample app

download

[zaki@k8s-master01 ~]$ mkdir src
[zaki@k8s-master01 ~]$ cd src/
[zaki@k8s-master01 src]$ git clone https://github.com/GoogleContainerTools/skaffold
Cloning into 'skaffold'...
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 75913 (delta 5), reused 4 (delta 0), pack-reused 75898
Receiving objects: 100% (75913/75913), 65.65 MiB | 5.74 MiB/s, done.
Resolving deltas: 100% (46015/46015), done.
[zaki@k8s-master01 src]$ cd skaffold/examples/g
gcb-kaniko/                generate-pipeline/         getting-started/           getting-started-kustomize/ google-cloud-build/        
[zaki@k8s-master01 src]$ cd skaffold/examples/getting-started
[zaki@k8s-master01 getting-started]$ 
[zaki@k8s-master01 getting-started]$ ls
Dockerfile  README.md  k8s-pod.yaml  main.go  skaffold.yaml
[zaki@k8s-master01 getting-started]$ ls -a
.  ..  Dockerfile  README.md  k8s-pod.yaml  main.go  skaffold.yaml
[zaki@k8s-master01 getting-started]$ cat Dockerfile 
FROM golang:1.12.9-alpine3.10 as builder
COPY main.go .
RUN go build -o /app main.go

FROM alpine:3.10
# Define GOTRACEBACK to mark this container as using the Go language runtime
# for `skaffold debug` (https://skaffold.dev/docs/workflows/debug/).
ENV GOTRACEBACK=single
CMD ["./app"]
COPY --from=builder /app .
[zaki@k8s-master01 getting-started]$
[zaki@k8s-master01 getting-started]$ cat k8s-pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: getting-started
spec:
  containers:
  - name: getting-started
    image: skaffold-example
[zaki@k8s-master01 getting-started]$ cat skaffold.yaml 
apiVersion: skaffold/v2beta3
kind: Config
build:
  artifacts:
  - image: skaffold-example
deploy:
  kubectl:
    manifests:
      - k8s-*

run skaffold dev

[zaki@k8s-master01 getting-started]$ skaffold dev
Listing files to watch...
 - skaffold-example
Generating tags...
 - skaffold-example -> skaffold-example:v1.9.0-64-ga3d6f30
Checking cache...
 - skaffold-example: Not found. Building
Building [skaffold-example]...
exiting dev mode because first build failed: couldn't build "skaffold-example": docker build: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/build?buildargs=null&cachefrom=null&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=null&memory=0&memswap=0&networkmode=&rm=0&shmsize=0&t=skaffold-example%3Av1.9.0-64-ga3d6f30&target=&ulimits=null&version=": dial unix /var/run/docker.sock: connect: permission denied
[zaki@k8s-master01 getting-started]

docker buildしてるな。一般ユーザだと動かん

[zaki@k8s-master01 getting-started]$ sudo /usr/local/bin/skaffold dev
Listing files to watch...
 - skaffold-example
Generating tags...
 - skaffold-example -> skaffold-example:v1.9.0-64-ga3d6f30
Checking cache...
 - skaffold-example: Not found. Building
Building [skaffold-example]...
Sending build context to Docker daemon  3.072kB
Step 1/7 : FROM golang:1.12.9-alpine3.10 as builder
1.12.9-alpine3.10: Pulling from library/golang
9d48c3bd43c5: Pull complete 
7f94eaf8af20: Pull complete 
9fe9984849c1: Pull complete 
cf0db633a67d: Pull complete 
0f7136d71739: Pull complete 
Digest: sha256:e0660b4f1e68e0d408420acb874b396fc6dd25e7c1d03ad36e7d6d1155a4dff6
Status: Downloaded newer image for golang:1.12.9-alpine3.10
 ---> e0d646523991
Step 2/7 : COPY main.go .
 ---> 17024371e8eb
Step 3/7 : RUN go build -o /app main.go
 ---> Running in c22c7ad9087e
 ---> e7bbd909861d
Step 4/7 : FROM alpine:3.10
3.10: Pulling from library/alpine
21c83c524219: Pull complete 
Digest: sha256:f0e9534a598e501320957059cb2a23774b4d4072e37c7b2cf7e95b241f019e35
Status: Downloaded newer image for alpine:3.10
 ---> be4e4bea2c2e
Step 5/7 : ENV GOTRACEBACK=single
 ---> Running in 28f849d0b00e
 ---> 52b367b4bf03
Step 6/7 : CMD ["./app"]
 ---> Running in 372abf86dc81
 ---> 31d1247e5bc2
Step 7/7 : COPY --from=builder /app .
 ---> 20a7f23e599b
Successfully built 20a7f23e599b
Successfully tagged skaffold-example:v1.9.0-64-ga3d6f30
The push refers to repository [docker.io/library/skaffold-example]
609daa751e03: Preparing 
1b3ee35aacca: Preparing 
exiting dev mode because first build failed: couldn't build "skaffold-example": denied: requested access to the resource is denied
[zaki@k8s-master01 getting-started]$ 

エラー。pushしようとしてる?

[zaki@k8s-master01 getting-started]$ sudo docker images
REPOSITORY                           TAG                  IMAGE ID            CREATED             SIZE
skaffold-example                     v1.9.0-64-ga3d6f30   20a7f23e599b        3 minutes ago       7.58MB
<none>                               <none>               e7bbd909861d        4 minutes ago       352MB
alpine                               3.10                 be4e4bea2c2e        3 weeks ago         5.58MB
k8s.gcr.io/kube-proxy                v1.18.2              0d40868643c6        4 weeks ago         117MB
k8s.gcr.io/kube-apiserver            v1.18.2              6ed75ad404bd        4 weeks ago         173MB
k8s.gcr.io/kube-scheduler            v1.18.2              a3099161e137        4 weeks ago         95.3MB
k8s.gcr.io/kube-controller-manager   v1.18.2              ace0a8c17ba9        4 weeks ago         162MB
k8s.gcr.io/pause                     3.2                  80d28bedfe5d        3 months ago        683kB
k8s.gcr.io/coredns                   1.6.7                67da37a9a360        3 months ago        43.8MB
k8s.gcr.io/etcd                      3.4.3-0              303ce5db0e90        6 months ago        288MB
golang                               1.12.9-alpine3.10    e0d646523991        9 months ago        350MB
quay.io/coreos/flannel               v0.11.0-amd64        ff281650a721        15 months ago       52.6MB

イメージのビルドはできている。

skaffold run

[zaki@k8s-master01 getting-started]$ skaffold run
Generating tags...
 - skaffold-example -> skaffold-example:v1.9.0-64-ga3d6f30
Checking cache...
 - skaffold-example: Not found. Building
Building [skaffold-example]...
failed to build: couldn't build "skaffold-example": docker build: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/build?buildargs=null&cachefrom=null&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=null&memory=0&memswap=0&networkmode=&rm=0&shmsize=0&t=skaffold-example%3Av1.9.0-64-ga3d6f30&target=&ulimits=null&version=": dial unix /var/run/docker.sock: connect: permission denied

む、devのときのイメージは使われない?

[zaki@k8s-master01 getting-started]$ sudo /usr/local/bin/skaffold run
Generating tags...
 - skaffold-example -> skaffold-example:v1.9.0-64-ga3d6f30
Checking cache...
 - skaffold-example: Not found. Building
Building [skaffold-example]...
Sending build context to Docker daemon  3.072kB
Step 1/7 : FROM golang:1.12.9-alpine3.10 as builder
 ---> e0d646523991
Step 2/7 : COPY main.go .
 ---> Using cache
 ---> 17024371e8eb
Step 3/7 : RUN go build -o /app main.go
 ---> Using cache
 ---> e7bbd909861d
Step 4/7 : FROM alpine:3.10
 ---> be4e4bea2c2e
Step 5/7 : ENV GOTRACEBACK=single
 ---> Using cache
 ---> 52b367b4bf03
Step 6/7 : CMD ["./app"]
 ---> Using cache
 ---> 31d1247e5bc2
Step 7/7 : COPY --from=builder /app .
 ---> Using cache
 ---> 20a7f23e599b
Successfully built 20a7f23e599b
Successfully tagged skaffold-example:v1.9.0-64-ga3d6f30
The push refers to repository [docker.io/library/skaffold-example]
609daa751e03: Preparing 
1b3ee35aacca: Preparing 
failed to build: couldn't build "skaffold-example": denied: requested access to the resource is denied
[zaki@k8s-master01 getting-started]$ 

一緒だ。

リポジトリ作成

DockerHubにリポジトリskaffold-exampleを作成してログイン

[zaki@k8s-master01 getting-started]$ sudo docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: zakihmkc
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[zaki@k8s-master01 getting-started]$ 

再度run

[zaki@k8s-master01 getting-started]$ sudo /usr/local/bin/skaffold run -d zakihmkc
Generating tags...
 - skaffold-example -> zakihmkc/skaffold-example:v1.9.0-64-ga3d6f30
Checking cache...
 - skaffold-example: Not found. Building
Building [skaffold-example]...
Sending build context to Docker daemon  3.072kB
Step 1/7 : FROM golang:1.12.9-alpine3.10 as builder
 ---> e0d646523991
Step 2/7 : COPY main.go .
 ---> Using cache
 ---> 17024371e8eb
Step 3/7 : RUN go build -o /app main.go
 ---> Using cache
 ---> e7bbd909861d
Step 4/7 : FROM alpine:3.10
 ---> be4e4bea2c2e
Step 5/7 : ENV GOTRACEBACK=single
 ---> Using cache
 ---> 52b367b4bf03
Step 6/7 : CMD ["./app"]
 ---> Using cache
 ---> 31d1247e5bc2
Step 7/7 : COPY --from=builder /app .
 ---> Using cache
 ---> 20a7f23e599b
Successfully built 20a7f23e599b
Successfully tagged zakihmkc/skaffold-example:v1.9.0-64-ga3d6f30
The push refers to repository [docker.io/zakihmkc/skaffold-example]
609daa751e03: Pushed 
1b3ee35aacca: Pushed 
v1.9.0-64-ga3d6f30: digest: sha256:1e1a7168b5d56d1367871203f5b966ded2a81eaa32b894929b72782d61b4ecaf size: 739
Tags used in deployment:
 - skaffold-example -> zakihmkc/skaffold-example:v1.9.0-64-ga3d6f30@sha256:1e1a7168b5d56d1367871203f5b966ded2a81eaa32b894929b72782d61b4ecaf
unable to connect to Kubernetes: getting client config for Kubernetes client: error creating REST client config in-cluster: unable to load in-cluster configuration, KUBERNETES_SERVICE_HOST and KUBERNETES_SERVICE_PORT must be defined
[zaki@k8s-master01 getting-started]$ 

pushには成功。
今度はk8sの情報がない、と。(~/.kube/configはあるんだけど)

[zaki@k8s-master01 getting-started]$ export KUBERNETES_SERVICE_HOST=https://k8s-master.esxi.jp-z.jp
[zaki@k8s-master01 getting-started]$ export KUBERNETES_SERVICE_PORT=6443
[zaki@k8s-master01 getting-started]$ sudo /usr/local/bin/skaffold run -d zakihmkc
Generating tags...
 - skaffold-example -> zakihmkc/skaffold-example:v1.9.0-64-ga3d6f30
Checking cache...
 - skaffold-example: Found Remotely
Tags used in deployment:
 - skaffold-example -> zakihmkc/skaffold-example:v1.9.0-64-ga3d6f30@sha256:1e1a7168b5d56d1367871203f5b966ded2a81eaa32b894929b72782d61b4ecaf
unable to connect to Kubernetes: getting client config for Kubernetes client: error creating REST client config in-cluster: unable to load in-cluster configuration, KUBERNETES_SERVICE_HOST and KUBERNETES_SERVICE_PORT must be defined

そういえば環境変数は引き継がない

[zaki@k8s-master01 getting-started]$ sudo -E /usr/local/bin/skaffold run -d zakihmkc
Generating tags...
 - skaffold-example -> zakihmkc/skaffold-example:v1.9.0-64-ga3d6f30
Checking cache...
 - skaffold-example: Found Remotely
Tags used in deployment:
 - skaffold-example -> zakihmkc/skaffold-example:v1.9.0-64-ga3d6f30@sha256:1e1a7168b5d56d1367871203f5b966ded2a81eaa32b894929b72782d61b4ecaf
unable to connect to Kubernetes: getting client config for Kubernetes client: error creating REST client config in-cluster: open /var/run/secrets/kubernetes.io/serviceaccount/token: no such file or directory

そんなファイルはない。

ううん?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment