大人気K8Sシリーズ。 今回でなんと第4回目 まずは、過去の振り返りをやっていきましょう。

振り返り

過去の奮闘記録。 構築日記その1

構築日記その2

構築日記その3 第1回目と第二回目はインフラ構築を頑張っていた感じです。引っ越しとかあって、K8Sの勉強は飛び飛びになっている感じでね。 そして、第3回にして、やっと色々とインフラ構築をスムーズにできて、さまざまな概念についても理解できてきた、という感じです。 はい、サービスね。これが大事な概念だった。POD間で通信をするためには、Serviceが必要だったのではないか?とね。ServiceでPODをcoreDNSに登録することができる。 そして、基本的に一つのサービス内での通信はしない。サービス間の通信はあるが。なので、docker composeのようにはいかないという話だな。

そして、今回の第4回目では、K8Sの使い方をもっと詳しく理解していきましょう、という回になっています。 具体的には、「つくって、こわして、直して学ぶkubernetes入門」という本に従って色々と進めていきたいと思っています。はい。 そして、第5回目に、私が開発した競馬システムをついにデプロイする、という感じに持っていきたいと思っています。よろしくお願いします。

まずは、harborにログインしておく

の前にロボットアカウントを作らないといけない感じ?

docker login 100.64.1.61:20080 -u username -p password server

nerdctlを使っているので、buildを使うためにbuildkitをインストールする必要がある。

しかも、buildkitdというのを走らせておく必要がある。

テストでgoで簡易サーバを作って走らせる

package main

import (
        "fmt"
        "log"
        "net/http"
)

func main() {
        http.HandleFunc("/",func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w,"Hellow, wordl!")
        })

        log.Println("starting server on port 8880")
        err := http.ListenAndServe(":8880", nil)
        if err != nil {
                log.Fatal(err)
        }

}

dockerfile

FROM golang:1.23 AS builder
WORKDIR /app
COPY . .
ENV CGO_ENABLED=0
RUN go mod tidy
RUN go build -o hello .

FROM scratch
COPY --from=builder /app/hello /hello
ENTRYPOINT ["/hello"]

go.modを入れるのを忘れずに。 go mod init github.com/hogehoge とかで問題ない。

harborにpushする

sudo docker tag hello-server:1.0 harbor.ingenboy.com/your-project/hello-server:1.0
sudo docker login harbor.ingenboy.com
sudo docker push harbor.ingenboy.com/test/hello-server:1.0

INFO[0000] pushing as a reduced-platform image (application/vnd.docker.distribution.manifest.v2+json, sha256:829e18e060ed137fd22e9a9342c0f8e8a53ff5c5103e551d116020c8611c6ce5)
manifest-sha256:829e18e060ed137fd22e9a9342c0f8e8a53ff5c5103e551d116020c8611c6ce5: waiting        |--------------------------------------|
config-sha256:e2c92b75c6c63eb9edff9a6e8f3caa832b476d763a424c68ceb3a6e7d8d66b5a:   done           |++++++++++++++++++++++++++++++++++++++|
elapsed: 0.4 s                                                                    total:  598.0  (1.5 KiB/s)
FATA[0000] failed to copy: unexpected status from PUT request to https://harbor.ingenboy.com/v2/test/hello-server/blobs/uploads/c93fd610-3616-4e4a-85f6-eec987460bf0?_state=2_rJUktfTkKy8Ursd7Da3_Weiu7UzcSi_Q5vuLtFvOB7Ik5hbWUiOiJ0ZXN0L2hlbGxvLXNlcnZlciIsIlVVSUQiOiJjOTNmZDYxMC0zNjE2LTRlNGEtODVmNi1lZWM5ODc0NjBiZjAiLCJPZmZzZXQiOjAsIlN0YXJ0ZWRBdCI6IjIwMjUtMDEtMTRUMTM6MzM6MTYuOTU1MTI1MDcxWiJ9&digest=sha256%3A424ca45be863e2033647e5e492f2f820172e0a376b2dafef7d47083702bd5a78: 413 Request Entity Too Large