Быстрый старт#

  1. Выполнить установку RDSH в прикладном namespace согласно разделу «Установка» Руководства по установке.

  2. Выполнить установку прикладного приложения с Client в прикладном namespace.

  3. Проверить работоспособность взаимодействия Client с RDSH.

Ниже приведен пример установки Client и проверки его работоспособности совместно с RDSH. Для разработки примера был использован язык Golang версии 1.22.4.

  1. Создать папку проекта и перейти в нее, выполнив команды:

    $ > mkdir radish-example
    $ > cd radish-example
    
  2. Создать go-модуль и установить зависимости, выполнив команды:

    $ > go mod init radish-example
    $ > go get github.com/mediocregopher/radix/v4
    
  3. Создать файл с исходным кодом приложения main.go:

    package main
    
    import (
        "context"
        "fmt"
        "os"
        "github.com/mediocregopher/radix/v4"
    )
    
    func main() {
        ctx := context.Background()
        client, err := (radix.PoolConfig{}).New(ctx, "tcp", os.Getenv("RADISH_ADDR"))
        if err != nil {
            panic(err)
        }
        var response string
        if err = client.Do(ctx, radix.Cmd(&response, "PING")); err != nil {
            panic(err)
        }
        fmt.Println(response) // ожидается PONG
        if err = client.Do(ctx, radix.Cmd(&response, "SET", "test-key", "test-value")); err != nil {
            panic(err)
        }
        fmt.Println(response) // ожидается OK
        if err = client.Do(ctx, radix.Cmd(&response, "GET", "test-key")); err != nil {
            panic(err)
        }
        fmt.Println(response) // ожидается test-value
        select {} // предотвращаем завершение приложения
    }
    
  4. Создать файл для сборки образа Dockerfile:

    FROM scratch
    WORKDIR /
    COPY radish-example /usr/local/bin/radish-example
    ENTRYPOINT ["/usr/local/bin/radish-example"]
    
  5. Собрать приложение и образ, используя команды:

    $ > GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o radish-example .
    $ > docker build -t radish-example -f Dockerfile
    
  6. Опубликовать образ в репозиторий образов, используя команды:

    $ > tag=<REGISTRY>/<REGISTRY_PATH>/radish-example:<VERSION>
    $ > docker tag radish-example "$tag"
    $ > docker push "$tag"
    

    Здесь:

    • <REGISTRY> — адрес репозитория образов, например myregistry.org;

    • <REGISTRY_PATH> — путь для публикации образа, например dev/radish_path;

    • <VERSION> — версия образа, например test.

  7. Запустить Pod с приложением в среде k8s с помощью команд:

    $ > namespace=<NAMESPACE>
    $ > cat <<EOF | kubectl apply -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: radish-example
      namespace: $namespace
      annotations:
        sidecar.istio.io/inject: "true"
        sidecar.istio.io/proxyCPU: "100m"
        sidecar.istio.io/proxyCPULimit: "100m"
        sidecar.istio.io/proxyMemory: "100Mi"
        sidecar.istio.io/proxyMemoryLimit: "100Mi"
    spec:
      containers:
      - name: radish-example
        image: $tag
        env:
        - name: RADISH_ADDR
          value: "radish-0.radish.${namespace}.svc.cluster.local:6379"
        resources:
          limits:
            cpu: 100m
            memory: 100Mi
          requests:
            cpu: 100m
            memory: 100Mi
    EOF
    

    Здесь:

    • <NAMESPACE> — имя пространства, в котором разворачивается Radish, например, radish-example.

  8. Pod не должен перезапускаться, проверить в логах Pod наличие записей:

    PONG
    OK
    test-value