diff --git a/.github/workflows/cd-pr.yml b/.github/workflows/cd-pr.yml index 4541004..86391b0 100644 --- a/.github/workflows/cd-pr.yml +++ b/.github/workflows/cd-pr.yml @@ -98,6 +98,60 @@ jobs: echo | openssl s_client -connect 191.252.159.227:6443 2>/dev/null \ | openssl x509 -noout -text | grep -E "Issuer|Subject|Not Before|Not After|DNS:|IP:" + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version: '1.22' + + - name: Test connection with Go + run: | + cat > /tmp/test.go << 'EOF' + package main + + import ( + "crypto/tls" + "crypto/x509" + "fmt" + "io" + "net/http" + "os" + ) + + func main() { + cert, err := tls.LoadX509KeyPair(os.Args[1], os.Args[2]) + if err != nil { + panic(err) + } + caCert, err := os.ReadFile(os.Args[3]) + if err != nil { + panic(err) + } + caCertPool := x509.NewCertPool() + caCertPool.AppendCertsFromPEM(caCert) + tlsConfig := &tls.Config{ + Certificates: []tls.Certificate{cert}, + RootCAs: caCertPool, + } + transport := &http.Transport{TLSClientConfig: tlsConfig} + client := &http.Client{Transport: transport} + resp, err := client.Get("https://191.252.159.227:6443/api/v1/namespaces/tasknote-stg") + if err != nil { + fmt.Println("ERROR:", err) + os.Exit(1) + } + defer resp.Body.Close() + body, _ := io.ReadAll(resp.Body) + fmt.Println("STATUS:", resp.Status) + fmt.Println("BODY:", string(body)[:100]) + } + EOF + + kubectl config view --raw -o jsonpath='{.users[0].user.client-certificate-data}' | base64 -d > /tmp/client.crt + kubectl config view --raw -o jsonpath='{.users[0].user.client-key-data}' | base64 -d > /tmp/client.key + kubectl config view --raw -o jsonpath='{.clusters[0].cluster.certificate-authority-data}' | base64 -d > /tmp/ca.crt + + cd /tmp && go run test.go /tmp/client.crt /tmp/client.key /tmp/ca.crt + - name: Terraform Plan id: check-changes working-directory: terraform-stg